Javascript:运行";document.write";在createElement脚本中失败

Javascript: Run "document.write" in createElement script failed

本文关键字:quot createElement 脚本 失败 document 运行 Javascript write      更新时间:2023-09-26

我的document.write有问题。现在,我有了一个动态加载脚本的页面。因此,我使用document.createElement来创建一个<script>。在javascript文件中,我使用document.write创建一个domiframe元素。但它并不是适用于所有浏览器。为什么不呢?

主页中的代码:

var script = document.createElement('script');
script.setAttribute('src', 'http://yoururl/test.js');
document.getElementsByTagName('head')[0].appendChild(script);

脚本test.js:中的代码

(function(){document.write('hello');})();

页面加载完成后运行的任何document.write语句都将创建一个新页面并覆盖当前页面的所有内容。这几乎肯定不是你想要发生的事情。

http://javascript.about.com/library/blwrite.htm

如果你想创建一个dom元素,可以这样做,并将其附加到文档(或元素(中:

var elem = document.createElement('iframe');
elem.src = "http://www.google.com";
document.getElementById('myContainer').appendChild(elem);

https://developer.mozilla.org/en/DOM/document.createElement

您正在中添加新的脚本元素。中的内容不会显示,因此即使document.write调用成功,您也不会看到文本。

如果你想显示内容,你必须将其添加到主体(作为子体或其他子体(,所以将脚本移动到主体:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<title>Document.write test</title>
<body>
  <div>
    <script type="text/javascript">
      var script = document.createElement('script');
      script.src = 'http://yoururl/test.js';
      document.getElementsByTagName('div')[0].appendChild(script);
    </script>
  </div>
  ...
</body>

请注意,在文档.write完成后,您必须仍然有一个有效的文档。

以上内容在Firefox 5中不起作用,但在IE 6中起作用。注意HTML5规范中关于document.write的警告:

这种方法具有非常特殊的行为。在某些情况下,当解析器处于运行,导致DOM与文件在其他情况下,呼叫可以先清除当前页面,就好像document.open((已被调用。在里面在更多的情况下,方法很简单忽略或引发异常。到更糟糕的是,确切的行为在某些情况下取决于网络延迟可能导致非常很难调试。由于所有这些原因,这种方法的使用非常强烈气馁。**