2010-07-17 71 views
2

当我在脚本标记下直接将下面的代码写入我的html页面时,字符串“test”会附加到我的页面而不会替换其内容(1):Javascript document.write Firefox中的怪异行为

document.write("test"); 

但是,如果我把同样的代码放到像一个单独的JavaScript文件(2):

<script src="http://127.0.0.1/whatever.js" type="text/javascript"></script> 

突然同样的代码重写我的整个页面。

有没有办法从远程文件执行document.write()并得到结果(1)?

谢谢你的时间。

+0

您准确地包含脚本的位置?文件的哪一部分? – 2010-07-17 11:17:44

+0

即。 – Benjamin 2010-07-17 12:08:09

+0

你真的不应该使用'document.write'。它有一些用途,但不是用于导入页面的脚本。 – Pointy 2010-07-17 12:26:11

回答

3

如果在页面渲染时使用doc.write,它将插入或追加字符串。如果在渲染后或在window.onload之后使用doc.write,则它将基本上再次开始渲染过程,并覆盖该页面。

这是我的猜测,你正在加载脚本时获得异步行为,并且它不会在onload之后执行。我无法重新创建您的问题。

+0

谢谢你真的发现是我的问题,我可以成功解决它。 – Benjamin 2010-07-18 00:46:13

0

您可能会将您的脚本包含在页面顶部。它获取document.write()的东西,从而写入文本而不是追加行为。

+0

你能给我一个概念证明吗? – Benjamin 2010-07-17 12:08:37

0

更安全的解决方案是将文档元素附加到页面 - 应始终工作