Ce code permet d'ouvrir plusieurs pages en variant des parametres (chiffres, lettres) dans le lien initial.
Interet?
Tester la structure de certains sites Internet.
Source / Exemple :
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function AjusterTaille(nombre,taille)
{
var str0 = String(nombre);
if (taille!=0)
{
if (taille<str0.length)
{
str0=str0.substr(0,taille);
} //end if then
else
{
while (taille>str0.length)
{
str0 = "0"+str0;
} //end while
} //end if else
} //end if then
return str0;
} //end function
function CombienParametres()
{
var str0 = document.forms.testeur.lien.value;
if (str0.search("{")==-1)
{
document.forms.testeur.parametres.value = 0;
document.forms.testeur.pages.value = 0;
alert("Aucun variateur de paramètres n'a été trouvé dans l'adresse saisie.");
} //end if then
else
{
//________Recherche du nombre de { presents dans l'adresse web________
var stra = str0;
var strb = str0;
var strc = str0;
var louvre = new Array();
var lsepare = new Array();
var lferme = new Array();
var cpt = 0;
var a = stra.search("{");
var b = strb.search(";");
var c = strc.search("}");
while (a>0)
{
louvre[cpt] = a;
lsepare[cpt] = b;
lferme[cpt] = c;
cpt++;
stra = stra.substr(a+1,stra.length-a);
strb = strb.substr(b+1,strb.length-b);
strc = strc.substr(c+1,strc.length-c);
a = stra.search("{");
b = strb.search(";");
c = strc.search("}");
} //end while
for(i=1;i<cpt;i++)
{
louvre[i]=louvre[i]+louvre[i-1]+1;
lsepare[i]=lsepare[i]+lsepare[i-1]+1;
lferme[i]=lferme[i]+lferme[i-1]+1;
} //end for
//liste des indexations de { stockes dans louvre
//liste des indexations de ; stockes dans lsepare
//liste des indexations de } stockes dans lferme
//nombre de { trouvees dans cpt
document.forms.testeur.parametres.value = cpt;
//________Teste si les parametres a faire varier sont valides et generation de la liste des variations________
var strchiffres = "0123456789"
var strlettres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lgen = new Array();
var lcpt = new Array();
for(i=0;i<cpt;i++)
{
var debut = str0.substring(louvre[i]+1,lsepare[i]);
var fin = str0.substring(lsepare[i]+1,lferme[i]);
//_______teste si est nombre_______
if (strchiffres.search(debut.substr(0,1))>=0)
{
//______est nombre______
if (Number(debut)>Number(fin))
{
alert("Dans la saisie n°"+(i+1)+", la valeur de depart est superieure a celle d'arrivee.\nSeule la valeur de depart sera donc prise en compte.");
fin = debut;
} //end if then
else
{
//nothing
}
//_______Defini la taille du nombre (constante ou variable)_______
if (fin.length>taille)
{
//______taille variable______
var taille = 0;
} //end if then
else
{
//______taille constante______
var taille = debut.length;
} //end if else
lgen[i] = "";
lcpt[i] = 0;
for (j=Number(debut);j<=Number(fin);j++)
{
lgen[i] = lgen[i] + AjusterTaille(j,taille) + "-";
lcpt[i]++;
} //end for
} //end if then
else
{
//______n'est pas nombre______
indexdebut = strlettres.search(debut);
indexfin = strlettres.search(fin);
if (indexdebut>indexfin)
{
alert("Dans la saisie n°"+(getElementByIdi+1)+", la valeur de depart est superieure a celle d'arrivee.\nSeule la valeur de depart sera donc prise en compte.");
indexfin = strlettres.length-1;
} //end if then
else
{
//nothing
} //end if else
lgen[i] = "";
lcpt[i] = 0;
for (j=indexdebut;j<=indexfin;j++)
{
lgen[i] = lgen[i] + strlettres.substr(j,1) + "-";
lcpt[i]++;
} //end for
} //end if else
} //end for
// la liste des variations a effectuer par parametre est stockee dans lgen, les variations sont separees par des -
// le nombre de variations par parametre est stocke dans lcpt
var NbTotalVariations = 1;
for (i=0;i<cpt;i++)
{
NbTotalVariations = NbTotalVariations*lcpt[i];
} //end for i
document.forms.testeur.pages.value = NbTotalVariations;
} //end if else
}//end function
function ouvrir()
{
var str0 = document.forms.testeur.lien.value;
if (str0.search("{")==-1)
{
document.forms.testeur.parametres.value = 0;
document.forms.testeur.pages.value = 0;
alert("Aucun variateur de paramètres n'a été trouvé dans l'adresse saisie.");
} //end if then
else
{
//________Recherche du nombre de { presents dans l'adresse web________
var stra = str0;
var strb = str0;
var strc = str0;
var louvre = new Array();
var lsepare = new Array();
var lferme = new Array();
var cpt = 0;
var a = stra.search("{");
var b = strb.search(";");
var c = strc.search("}");
while (a>0)
{
louvre[cpt] = a;
lsepare[cpt] = b;
lferme[cpt] = c;
cpt++;
stra = stra.substr(a+1,stra.length-a);
strb = strb.substr(b+1,strb.length-b);
strc = strc.substr(c+1,strc.length-c);
a = stra.search("{");
b = strb.search(";");
c = strc.search("}");
} //end while
for(i=1;i<cpt;i++)
{
louvre[i]=louvre[i]+louvre[i-1]+1;
lsepare[i]=lsepare[i]+lsepare[i-1]+1;
lferme[i]=lferme[i]+lferme[i-1]+1;
} //end for
//liste des indexations de { stockes dans louvre
//liste des indexations de ; stockes dans lsepare
//liste des indexations de } stockes dans lferme
//nombre de { trouvees dans cpt
document.forms.testeur.parametres.value = cpt;
//________Teste si les parametres a faire varier sont valides et generation de la liste des variations________
var strchiffres = "0123456789"
var strlettres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lgen = new Array();
var lcpt = new Array();
for(i=0;i<cpt;i++)
{
var debut = str0.substring(louvre[i]+1,lsepare[i]);
var fin = str0.substring(lsepare[i]+1,lferme[i]);
//_______teste si est nombre_______
if (strchiffres.search(debut.substr(0,1))>=0)
{
//______est nombre______
if (Number(debut)>Number(fin))
{
alert("Dans la saisie n°"+(i+1)+", la valeur de depart est superieure a celle d'arrivee.\nSeule la valeur de depart sera donc prise en compte.");
fin = debut;
} //end if then
else
{
//nothing
}
//_______Defini la taille du nombre (constante ou variable)_______
if (fin.length>taille)
{
//______taille variable______
var taille = 0;
} //end if then
else
{
//______taille constante______
var taille = debut.length;
} //end if else
lgen[i] = "";
lcpt[i] = 0;
for (j=Number(debut);j<=Number(fin);j++)
{
lgen[i] = lgen[i] + AjusterTaille(j,taille) + "-";
lcpt[i]++;
} //end for
} //end if then
else
{
//______n'est pas nombre______
indexdebut = strlettres.search(debut);
indexfin = strlettres.search(fin);
if (indexdebut>indexfin)
{
alert("Dans la saisie n°"+(getElementByIdi+1)+", la valeur de depart est superieure a celle d'arrivee.\nSeule la valeur de depart sera donc prise en compte.");
indexfin = strlettres.length-1;
} //end if then
else
{
//nothing
} //end if else
lgen[i] = "";
lcpt[i] = 0;
for (j=indexdebut;j<=indexfin;j++)
{
lgen[i] = lgen[i] + strlettres.substr(j,1) + "-";
lcpt[i]++;
} //end for
} //end if else
} //end for
// la liste des variations a effectuer par parametre est stockee dans lgen, les variations sont separees par des -
// le nombre de variations par parametre est stocke dans lcpt
var NbTotalVariations = 1;
for (i=0;i<cpt;i++)
{
NbTotalVariations = NbTotalVariations*lcpt[i];
} //end for i
document.forms.testeur.pages.value = NbTotalVariations;
// ________Generation des liens parametres________
// liste des segments
var ls = new Array();
for(i=0;i<cpt;i++)
{
ls[i] = lgen[i].length/lcpt[i]-1;
} //end for i
// rectification des limites d'ouverture et de fermeture des parametres trouves initialement
var lo = new Array();
var lf = new Array();
for(i=0;i<cpt;i++)
{
var a = 0;
for(j=0;j<i;j++)
{
a = a+ ls[j] + 3;
} //end for j
lo[i] = louvre [i] - a;
lf[i] = lferme [i] - a;
} //end for i
//__Initialisation au 1er parametre__
var segment = lgen[0].length/lcpt[0]-1;
var la0 = new Array();
var i = 0;
for(j=0;j<lcpt[i];j++)
{
var str1 = lgen[i].substr(j*(segment+1),segment);
la0[j] = str0.substring(0,lo[i]) + str1 + str0.substring(lf[i]+1,str0.length);
} //end for j
var ladresses = new Array();
var a = 0;
if(cpt==1)
{
// Pour le cas, ou il n'y aurait qu'un seul parametre
for(j=0;j<lcpt[i];j++)
{
ladresses[a] = la0[j];
a++;
} //end for j
} //end if
else
{
//__Restant des parametres__
var la1 = new Array();
la1 = la0;
for(i=1;i<cpt;i++)
{
var segment = lgen[i].length/lcpt[i]-1;
for(j=0;j<la1.length;j++)
{
var la2 = new Array();
for(k=0;k<lcpt[i];k++)
{
var str1 = lgen[i].substr(k*(segment+1),segment);
la2[k] = la1[j].substring(0,lo[i]) + str1 + la1[j].substring(lf[i]+1,la1[j].length);
if(i==(cpt-1))
{
ladresses[a] = la2[k];
a++;
} //end if then
} //end for k
} //end for j
la1 = la2;
} //end for i
} //end if else
// les pages a ouvrir sont stockees dans la liste ladresses
//________Ouverture des pages________
for (i=0;i<a;i++)
{
pagearafraichir=window.open(ladresses[i]);
} //end for i
alert("Ouverture des pages terminee avec succes !");
} //end if else
} //end function
</SCRIPT>
<title>Ouvrir et tester pages web</title></HEAD>
<BODY>
<form name="testeur">
<p><b>Ce module permet d'ouvrir ou tester l'ouverture de pages web.</b> <br>
Il fonctionne sur la base d'une adresse internet qui contient un ou plusieurs
paramètres à faire varier. <br>
Le paramètre est défini entre accollades à l'emplacement souhaité dans l'adresse
internet. Avec sa valeur de départ et celle de fin séparées par un point-virgule.
<br>
Par exemple, si on veut faire varier un nombre entre 1 et 7, il suffit de
mettre {1;7} <br>
S'il s'agit d'une lettre, mettre {a;z}. Pour les lettres, la casse est respectée
et l'incrémentation suit l'ordre alphabétique. Ainsi {a;z} est different de
{A;Z}. Toutefois, le fait de mettre {a;Z} permettra de balayer l'ensemble
des lettres en minuscule et celles en majuscule. Notez que {A;z}, ne permettra
de balayer que de les majuscules (arrêt à la lettre Z). <br>
<br>
Saisissez l'adresse de la page Internet avec les paramètres à varier : <br>
<input type="text" value="http://cdmurray80.googlepages.com/Genki{1;8}.jpg" name="lien" size=100 onfocus="javascript:CombienParametres();">
<br>
<br>
<input type="text" name="parametres" size=1>
paramètre(s) a(ont) été identifié(s) pour la variation d'ouverture.
<br>
Cela correspond à
<input type="text" name="pages" size=3>
pages à ouvrir. </p>
<br>
<input type="button" value="Cliquez ici pour commencer" onclick="javascript:ouvrir();">
</form>
</BODY>
</HTML>
Conclusion :
Limitations:
Code teste sous IE v7.0 et Firefox v2.0 uniquement.
Historique:
- La version 0 ne fonctionne que pour 1 parametre contenant des chiffres uniquement.
- La version 1 fut etendue pour utiliser les lettres (minuscules et majuscules), mais pour un seul parametre.
- La version 2 fonctionne(rait) pour un nombre illimite de parametres contenant des chiffres ou exclusivement des lettres (minuscules et majuscules).
Futures ameliorations:
- integration d'une temporisation pour charger les pages
- fermeture automatique des pages ouvertes
- ouverture des pages par lot (de 10 pages par exemple)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.