Ouvrir et tester pages web v2

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 597 fois - Téléchargée 18 fois

Contenu du snippet

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)

A voir également

Ajouter un commentaire

Commentaire

lakichemole
Messages postés
253
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
18 mai 2009

Salut pourquoi tu ferais pas un truc un petit plus générique? Je m'explique pourquoi tu ne ferais pas comme ça:
"http://cdmurray80.googlepages.com/Genki{1;8;strchiffres}.jpg" ou strchiffres est le nom de ta liste de caractères et on pourrais faire un autre truc du genre:
"http://cdmurray80.googlepages.com/Genki{1;5;strchiffresimpaires}.jpg"
et ta variable serais strchiffresimpaires="1;3;5;7;9";
Comme cela chacun créé sa propre liste.
Et même plus tu pourrais rendre cette méthode générique pour qu'elle s'applique à n'importe quelle chaine pas seulement au lien web se qui t'en fera une sorte de librairie utilisable :)
Sinon ton code est très explicite et bien commenté!

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.