如何在运行时添加脚本?(文档.Write不是一个函数)
How to add a script at runtime? (document.write is not a function)
我试图在运行时为我的Xul应用程序添加一个脚本,使用:
document.write('<script type="text/javascript" src="chrome://myapp/content/myscript.js"/>');
但是我得到了:
错误:文档。写作不是一个函数
函数确实存在于文档中。我还从文档中得到了这个例子:
document.open();
document.write("<h1>Out with the old - in with the new!</h1>");
document.close();
但是我得到了:
文档。Open不是函数
你知道怎么了吗?
,
也许我可以把我的js代码在一个javascript模块和导入它与组件。utils.import(寻找在哪里把资源和如何引用它)
如果使用的是XHTML,则document.write
函数不可用;见:http://www.w3.org/MarkUp/2004/xhtml-faq docwrite。您很可能正在使用XHTML。
您应该评估是否真的需要使用XHTML。如果没有,那么您将能够使用document.write
。但是如果这样做,则需要使用另一种方法来操作DOM。可以直接使用DOM方法,也可以使用jQuery等辅助库。
从这个例子
使用XUL中的createElement方法让你完成类似的事情文档。用HTML写,用它你可以创建新的页面和部分网页。
你有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>
您在另一个答案的评论中说,您正在从setTimeout调用的函数中执行document.write(),该函数本身处于onload中。我建议不要在页面加载后使用document.write()。根据Mozilla文档:
自动document.open()调用发生在document.write()在页面加载后调用,但是这在W3C中没有定义规范。
由于自动document.open()
如果目标中存在文档,则此方法将其清除
从记忆中,我认为旧版本的IE只是给出了一个错误,如果你在页面加载后使用document.write(),但我不能费心在他们的文档中找到任何东西。
正如其他人提到的,它不适合xhtml。
为什么要在这个实例中执行document.write() ?为什么不直接包含你的脚本呢?
有两种方法可以在运行时动态加载脚本。
第一种方法是通过下标加载器。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么