动态Javascript导入

时间:2011-08-09 03:34:22

标签: javascript html ajax

我制作的网页需要能够动态更改正在运行的JavaScript代码。很多时候,动态代码中的函数具有相同的名称,但行为不同,因此使用document.getElementsByTagName('head')[0].appendChild(script);不是一个选项。现在,我在文档的头部有<script type="text/javascript" id="dynamicScript" src="about:blank"></script>,当我想更改活动脚本时,我调用document.getElementById('dynamicScript').src="ajax.php?get=script&script=" + page;,并且该PHP页面吐出了相关的脚本(没有标签)。但它并不起作用。我做错了什么,或者我还能做些什么呢?

2 个答案:

答案 0 :(得分:0)

您需要向DOM添加新的<script>元素,而不仅仅是更改它。此外,您无法在不重新加载页面的情况下卸载旧脚本。如果需要删除先前脚本声明的函数和数据,则需要以编程方式执行此操作。替换功能有效。

最后,我建议使用像LABjs,RequireJS,ControlJS或SexyJS这样的脚本加载器。手动完成是额外的工作。

编辑:如果您使用的是jQuery,并且不需要对脚本的加载顺序进行额外控制,您也可以使用getScript()

答案 1 :(得分:0)

只是因为你正在吐出正确的javascript,并不意味着它正在被执行。正如Stefan所指出的,一个选择是使用jQuery的getScript插件来完成你的任务。