0

我想在加载了 AJAX/jQuery-JSON 的页面中显示广告。

  • 剧本:
  • 文件 xxxxx.js 包含一个 document.write();

如何集成此脚本并使 document.write 被解释。为什么它不起作用?

这是我的测试,显示脚本已执行,因为显示了警报('hello 1'),但没有显示包含警报('hello 2')的 document.write;

直接调用文件进入DOM执行好“hello 1”和“hello 2”

测试.js

alert("hello 1");
document.write('<scr'+'ipt type="text/javascript">alert("hello 2");</scr'+'ipt>');

指数 :

<body>
<script>
function loadScriptJs() {
var s = document.createElement('script'); 
s.src = 'test.js';  
s.type = 'text/javascript';
document.getElementById("pub").appendChild(s);
}
</script>
<div id="pub">
    PUB A AJOUTER CI DESSOUS EN JAVASCRIPT  :
    <!--  appel direct de la pub 
    <script src="test.js" type="text/javascript"></script> -->
</div>
<script> loadScriptJs(); </script>
</body>
4

1 回答 1

1

当您添加带有 的脚本时appendChild,它会异步加载。因此,当 test.js 中的代码运行时,很可能 DOM 已经构建好了,并且document.write会覆盖所有页面内容。

看起来最简单的解决方案是替换它:

<script> loadScriptJs(); </script>

和:

<script src="test.js"></script>

另一种选择是document.write在 test.js 中完全不使用。从loadScriptJs,设置脚本加载回调 ( s.onload = function() { /* loaded */ })),然后从该回调将广告注入 DOM。

于 2013-06-19T20:36:09.687 回答