Re kfv300,
pour r�pondre � ta derni�re question, voici un code pr�t-�-l'emploi que je vais tenter d'expliquer :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var receveur = document.getElementById("conteneur-pub"); // je récupère l'élément dans lequel je vais insérer le lien
// je prépare le lien
var lien = document.createElement("a");
lien.target = "_blank";
// ça, tu connais ;)
var random_number = Math.random();
if (random_number < 0.5) {
lien.href = "URL_du_site_A";
lien.textContent = "site A";
} else {
lien.href = "URL_du_site_B";
lien.textContent = "site B";
}
// enfin, j'insère le lien
receveur.appendChild(lien); |
Comme tu le vois il faut que tu saches � l'avance � quel endroit dans ta page tu veux ins�rer ton lien. Avec les scripts de publicit�, ce n'est pas forc�ment le cas ; je reviendrai l�-dessus.
Pour cet exemple j'ai utilis� des m�thodes du DOM : createElement et appendChild. Ce n'est pas le plus facile pour un d�butant, mais elles sont int�ressantes � conna�tre car elles font pr�cis�ment ce qu'on leur demande. Une autre solution est d'utiliser innerHTML qui permet de taper directement du code HTML :
receveur.innerHTML = "<a href='URL_du_site_A'>site A</a>";
C'est l�g�rement mois efficace car le moteur JavaScript va devoir faire appel � l'analyseur HTML pour ensuite utiliser � sous le capot � les m�thodes DOM. Et personnellement, je trouve qu'un script utilisant innerHTML est plus difficile � maintenir.
Pour ins�rer le lien comme je l'ai d�j� dit, c'est mieux de conna�tre l'�l�ment qui va le recevoir. Dans mon exemple j'ai suppos� qu'il existait dans la page une <div id="conteneur-pub"></div>. Si tu proposes ton code publicitaire � des d�veloppeurs tiers, tu peux leur imposer d'avoir tel ou tel �l�ment avec tel ou tel id dans leur page, mais ils trouveront �a contraignant.
Il y a toujours la vieille solution d'utiliser document.write(), mais elle est d�conseill�e.
Le mieux est de d�tecter l'emplacement gr�ce �� la balise script qui inclut justement ton script.
1 2 3 4 5
| var script = document.currentScript;
var receveur = script.parentNode;
// ensuite, on connaît la chanson
receveur.appendChild(lien); |
Pour faire plus court :
document.currentScript.parentNode.appendChild(lien);
Il reste un dernier probl�me : les scripts que tu cherches � ins�rer. Ils ne sont pas ex�cut�s quand on les ins�re dynamiquement. Comme l'a dit Sylvain, il va falloir que tu fasses du script loading. Je te renvoie � son post�
Partager