2010-08-05 4 views
2

Je veux ajouter une annonce google javascript mais je ne peux pas insérer le javascript dans la div en utilisant jquery. J'essaie de simuler mon problème avec ce test, qui utilise un conseil que j'ai trouvé sur stackoverflow, mais cela ne fonctionne pas.ajouter javascript dans une page html avec jquery

Je veux que <script type='text/javascript'>document.write('hello world');</script> soit inséré dans le div, et "hello world" soit affiché entre le tag_1 et le tag_2.

Voici le code:

<html> 
    <head> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(function() { 
     var str="<script type='text/javascript'>document.write('hello world');"; 
     str+="<"; 
     str+="/script>"; 

     $('#insert_here').append(str); 
     }); 
     </script> 
    </head> 
    <body> 
     tag_1<br/> 
     <div id="insert_here"> 
     </div> 
     tag_2<br/> 
    </body> 
</html> 

Tanks pour vos réponses,

Lucas

Répondre

1

Je me suis une excellente solution:

  1. Insérez votre code Google Adsense partout sur votre page - par exemple Si votre CMS vous permet seulement de le mettre sur le côté droit, alors collez-le là.
  2. Enveloppez un div autour avec display:none style
  3. Ajoutez du code jquery pour déplacer le div vers l'emplacement de votre choix.

Comme le javascript est déjà lancé, il n'y a aucun problème à déplacer le bloc de script là où vous le souhaitez.

par exemple. Si vous souhaitez mettre 2 blocs de publicités google entremêlés dans votre blog (disons après le paragraphe 1 et après le paragraphe 4), alors c'est parfait.

Voici quelques exemples de code:

<div id="advert1" style="display:none"> 
<div class="advertbox advertfont"> 
    <div style="float:right;"> 
     <script type="text/javascript"><!-- 
     google_ad_client = "pub-xxxxxxxxxxxxxxxxx"; 
     /* Video box */ 
     google_ad_slot = "xxxxxxxxxxxxxxxxx" 
     google_ad_width = 300; 
     google_ad_height = 250; 
     //--> 
     </script> 
     <script type="text/javascript" 
     src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
     </script> 
    </div> 
</div> 
</div> 

<script> 
$(document).ready(function() { 

$('#advert1').appendTo("#content p:eq(1)"); 
$('#advert1').css("display", "block"); 

}); 
</script> 

P.S. #content se trouve là où le contenu commence sur mon CMS (Squarespace) donc vous pouvez le remplacer par ce que vous avez dans votre CMS. Cela fonctionne un régal et ne casse pas Google ToS.

+0

Adsense est très strict, affichage: aucun pourrait obtenir vous avez banni même si c'est inoffensif. Je ne voudrais pas essayer quelque chose d'intelligent avec des annonces Adsense. –

+0

Bon point - ne casse pas la solution - il suffit de supprimer l'affichage: aucun - vous pouvez toujours utiliser cette solution pour charger les annonces et les déplacer vers l'emplacement souhaité. –

1

Vous ne pouvez pas utiliser document.write après que la page a terminé le chargement. Au lieu de cela, il suffit d'insérer le contenu que vous souhaitez écrire dans.

<script type="text/javascript"> 
    $(function() { // This is equivalent to document.ready 
     var str="hello world"; 
     $('#insert_here').append(str); 
    }); 
</script> 
2

Voir my answer to Are dynamically inserted <script> tags meant to work? pourquoi vous ne pouvez pas utiliser innerHTML, qui les fonctions de jQuery carte quand passé une chaîne HTML, pour insérer un élément de script . document.write échoue également when used after the document has been fully parsed. Pour contourner ce problème, vous devrez utiliser les fonctions DOM pour insérer un élément dans la div. Les annonces Google sont des iframes, c'est donc généralement le cas de trouver le code iframe et de l'ajouter à la place.


Pour insérer correctement un élément de script, vous devez utiliser les fonctions DOM, par exemple:

var txt = 'alert("Hello");'; 
var scr = document.createElement("script"); 
scr.type= "text/javascript"; 

// We have to use .text for IE, .textContent for standards compliance. 
if ("textContent" in scr) 
    scr.textContent = txt; 
else 
    scr.text = txt; 

// Finally, insert the script element into the div 
document.getElementById("insert_here").appendChild(scr); 
+0

Merci pour votre conseils! Maintenant, je suis capable d'insérer le Javascript mais je ne peux pas l'exécuter. Auriez-vous une solution?Voici mon code:

Lucas

+0

Lucas: vous essayez toujours d'insérer script en utilisant * innerHTML *, ce qui est impossible. Vous devez utiliser la fonction * createElement *, j'ai ajouté un exemple à ma réponse. –

+0

Merci beaucoup! Je l'ai essayé sur ma question depuis hier et maintenant cela fonctionne. Merci encore =) – Lucas

Questions connexes