我尝试在运行时向我的Xul应用程序添加一个脚本:
document.write('<script type="text/javascript" src="chrome://myapp/content/myscript.js"/>');
但我得到了:
错误:document.write不是 功能
该功能确实存在in the docs。我从文档中得到了这个例子:
document.open();
document.write("<h1>Out with the old - in with the new!</h1>");
document.close();
但我得到了:
document.open不是函数
知道什么是错的吗?
- 更新
也许我可以将我的js代码放在Javacript模块中并使用Components.utils.import导入它(寻找放置资源的位置以及如何引用它)
答案 0 :(得分:0)
如果您使用XHTML,则document.write
功能不可用;见:http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite。您可能正在使用XHTML。
您应该评估您是否确实需要使用XHTML。如果没有,那么您将能够使用document.write
。但是如果你这样做,你将需要使用另一种方法来操纵DOM。您可以使用DOM方法直接执行此操作,也可以使用诸如jQuery之类的帮助程序库。
答案 1 :(得分:0)
来自this example。
在XUL中使用createElement方法 让你完成类似的事情 HTML中的document.write,与您一起使用 可以创建新的页面和部分 网页。
答案 2 :(得分:0)
你是否在脚本标签内有javascript?你是否在代码中的某个地方启动了这个功能?它不会自行运行。
这有效:
<html>
<head>
<script type="text/javascript">
function addCont(){
document.open();
document.write("<h1>New text</h1>");
document.close();
}
</script>
</head>
<body onload="addCont()">
<p>Some text...</p>
</body>
</html>
答案 3 :(得分:0)
你在另一个答案的评论中说你正在从一个setTimeout调用的函数中执行document.write(),该函数本身就在onload中。 我建议不要在页面加载后使用document.write()。根据Mozilla doco:
自动document.open()调用 在document.write()时发生 在页面加载后调用,但是 这在W3C中没有定义 说明书
因为自动document.open()
如果目标中存在文档,则此方法将其清除
从内存中我认为,如果你在页面加载后使用了document.write(),那么IE的旧版本只会出错,但我不会想要在他们的doco中找到任何东西。
正如其他人提到的,它不适用于xhtml。
为什么你甚至想在这个实例中做document.write()?为什么不直接包含您的脚本?
答案 4 :(得分:0)