document.write加载外部Javascript源时不起作用

我正尝试将外部JavaScript文件动态加载到HTML元素中以预览广告代码。 该脚本加载并执行,但脚本中包含“document.write”,它有一个问题正确执行但没有错误。

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
        <script type="text/javascript">
        $(function() {
            source = 'http://ib.adnxs.com/ttj?id=555281';

            // DOM Insert Approach
            // -----------------------------------
            var script = document.createElement('script');
                script.setAttribute('type', 'text/javascript');
                script.setAttribute('src', source);

            document.body.appendChild(script);
        });
        </script>
    </head>

<body>
</body>
</html>

我可以让它工作

  • 如果我将源移动到同一个域进行测试
  • 如果脚本被修改为使用document.createElement和appendChild而不是像上面的代码那样使用document.write。
  • 我无法修改脚本,因为它是由第三方生成和托管的。

    有谁知道为什么document.write不能正常工作? 有没有办法解决这个问题?

    谢谢您的帮助!


    另一个解决方案是创建一个iframe,然后在ajax调用准备就绪时加载该iframe中的脚本:

    var iframe = document.createElement('iframe');
    document.body.appendChild(iframe);
    var doc = iframe.contentWindow.document;
    
    // do this whenever you want (f.ex after ajax is made):
    doc.open();
    doc.write('<script src="http://ib.adnxs.com/ttj?id=555281">x3C/script>');
    doc.close();
    

    这样,最终脚本中的document.write不会影响您的网站,只是iframe。 您需要设置iframe的样式以适应广告。


    如果它还包含document.write则异步加载外部脚本标记将具有潜在危险。 所以我会建议在你的最后使用document.write

    document.write('x3Cscript src="http://ib.adnxs.com/ttj?id=555281">x3C/script>');
    

    或只是一个脚本标签(杜):

    <script src="http://ib.adnxs.com/ttj?id=555281"></script>
    

    希望$(function() (当dom准备好时)的document.write

    删除document .ready包装。

    然后移动到 - </body>之前。 ( 或者到容器位置 - 您想要显示小部件的位置。)

    所以:

    <html>
        <head>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
        </head>
    
    <body>
    
    //bla bla...
    
    <script type="text/javascript">
    
      (function (){
    
               var source = 'http://ib.adnxs.com/ttj?id=555281';
    
                // DOM Insert Approach
                // -----------------------------------
                var script = document.createElement('script');
                    script.setAttribute('type', 'text/javascript');
                    script.setAttribute('src', source);
                    document.body.appendChild(script);
       })();
    
    </script>
    </body>
    </html>
    

    重要:

    在这里输入图像描述

    链接地址: http://www.djcxy.com/p/47907.html

    上一篇: document.write Not working when loading external Javascript source

    下一篇: How to test if document.write() was successful