2010-08-05 223 views
2

我想添加一个javascript google广告,但是我无法将javascript插入到使用jquery的div中。我尝试用这个测试来模拟我的问题,它使用了我在stackoverflow上发现的一些建议,但它不起作用。用jquery将html添加到html页面

我想<script type='text/javascript'>document.write('hello world');</script>被插入到div中,并且在标签_1和标签__2之间显示“hello world”。

下面是代码:

<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> 

坦克为您解答,

卢卡斯

回答

1

我想出了一个很好的解决方案:

  1. 上的任何地方插入您的谷歌Adsense代码你的页面 - 例如如果您的CMS只允许您将其放在右侧,请将其粘贴在那里。
  2. 围绕它与display:none风格
  3. 添加一些jQuery代码来移动div到你想要的位置。

由于javascript已经运行,所以将脚本块移到任何你想要的位置都没有问题。

例如如果您希望在您的博客中散布2块谷歌广告(比如在第1段和第4段之后),那么这是完美的。

下面是一些示例代码:

<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> 

附: #content恰好是内容在我的CMS(Squarespace)上启动的位置,因此您可以用CMS中的任何内容替换它。这是一种享受,不会破坏Google ToS。

+0

Adsense是非常严格的,显示:没有可能得到即使这是无害的,你也禁止了。我不会尝试Adsense广告的任何聪明之处。 – 2013-10-13 07:21:30

+0

好点 - 不会破坏解决方案 - 只是删除显示:无 - 您仍然可以使用此解决方案加载广告并将它们移动到所需的位置。 – 2013-10-15 08:25:38

1

不能使用document.write后的页面加载完毕。取而代之的是,只需插入要在写入内容。

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

my answer to Are dynamically inserted <script> tags meant to work?为什么不能使用的innerHTML,其中jQuery的功能映射时,通过一个HTML字符串,插入脚本元素。 document.write也将失败when used after the document has been fully parsed

要解决此问题,您将不得不使用DOM函数将元素插入到div中。 Google广告是iframe,因此通常是寻找iframe代码并附加代码。


要正确插入脚本元素,你需要使用DOM的功能,例如:

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

感谢您的咨询!现在我可以插入Javascript但我无法执行它。你有解决方案吗?这里是我的代码:

Lucas 2010-08-05 19:57:09

+0

卢卡斯:你还在试图插入使用脚本* *的innerHTML,这是不可能的。你需要使用* createElement *函数,我已经给我的答案添加了一个例子。 – 2010-08-05 20:13:43

+0

非常感谢!自昨天起我就一直在尝试解决这个问题,现在它可以工作。再次感谢=) – Lucas 2010-08-06 16:48:24