我制作的网页需要能够动态更改正在运行的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页面吐出了相关的脚本(没有标签)。但它并不起作用。我做错了什么,或者我还能做些什么呢?
答案 0 :(得分:0)
您需要向DOM添加新的<script>
元素,而不仅仅是更改它。此外,您无法在不重新加载页面的情况下卸载旧脚本。如果需要删除先前脚本声明的函数和数据,则需要以编程方式执行此操作。替换功能有效。
最后,我建议使用像LABjs,RequireJS,ControlJS或SexyJS这样的脚本加载器。手动完成是额外的工作。
编辑:如果您使用的是jQuery,并且不需要对脚本的加载顺序进行额外控制,您也可以使用getScript()。
答案 1 :(得分:0)
只是因为你正在吐出正确的javascript,并不意味着它正在被执行。正如Stefan所指出的,一个选择是使用jQuery的getScript插件来完成你的任务。