【问题标题】:jQuery.load doesn't execute javascript with document.writejQuery.load 不使用 document.write 执行 javascript
【发布时间】:2010-04-13 16:38:54
【问题描述】:

我正在尝试使用 jQuery.Load 加载具有 document.write 的广告调用,但由于某种原因,它无法重新加载包含整个广告的页面,或者至少在 Firefox 中。

这是代码的简化版本。

动态加载.html

<html>
<head>
<script src="http://www.prweekus.com/js/scripts.js?3729212881" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Load of Script</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
   google.load("jquery", "1.3.2");
</script>
<script type="text/javascript">
   $(document).ready(function(){
    $("#myButton").click(function() {
        $("#myDiv").load("source.html");
    });
   });
</script>
</head>
<body>
<button id="myButton">Click Me</button>
<div id="myDiv"></div>

<div id="slideAdUnit"></div>

</body>
</html>

来源.html

<script language="javascript" type="text/javascript">
  document.write('<script language="javascript" type="text/javascript"><\/script>');
</script>
test

单击 FF 中的按钮后,浏览器就会等待加载。有什么想法吗 ?

最终我会在 document.write 中传递一个指向我们广告服务器的 src 元素。

感谢您的帮助。

【问题讨论】:

    标签: jquery ajax load


    【解决方案1】:

    页面加载完成后你不能使用document.write:如果你这样做,它将替换页面的内容。

    使用 jQuery 动态加载脚本的最简单方法是:

    $.getScript( url );
    

    另一种方法是创建一个新的&lt;script&gt; 元素并将其添加到文档中。

    【讨论】:

      【解决方案2】:

      writeCapture.js(完全披露:我是作者)可以解决这个问题:

      $("#myDiv").writeCapture().load("source.html");
      

      【讨论】:

        【解决方案3】:

        您需要在 DOM 中插入一个脚本块。你不能像那样把它写到文档中。

        使用:$(document.createElement('script'));,然后设置你需要的属性。

        var newBlock = $(document.createElement('script'));
        $(newBlock).attr('src','http://...')
        

        【讨论】:

          【解决方案4】:

          我发现 IE 存在同样的问题 - 它不执行使用 document.write 加载的脚本,而是创建一个脚本 DOM元素工作得很好。

          在您的情况下,如果您在 Source.html 中只有一个要加载的脚本,只需修改它以动态创建脚本 DOM 元素。它适用于 IEFF。但是如果您有多个脚本文件要动态加载,您可能无法使用此技术,因为此技术不能保证 IE 中的执行顺序。

          请到 Google 并搜索“Even Faster Websites”,您将获得一篇关于动态脚本加载的非常好的文章。

          顺便说一句,我不明白为什么 IE 不执行使用 document.write 加载的脚本。

          如果我使用 document.write,我的 FF 也会等待一些事情(同样的事情发生在你身上!!)。我不确定原因,它可能非常低级。所以,请不要将它与 FF 一起使用。如果您已经确定原因,请分享。

          【讨论】:

            猜你喜欢
            • 2012-02-16
            • 2010-09-09
            • 2014-10-16
            • 2010-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-23
            • 2012-11-19
            相关资源
            最近更新 更多