jQuery:如何在运行时插入或删除.js文件?

Kei*_* L. 1 javascript jquery file append

我想在点击链接后添加.js文件..js文件是一个脚本,没有直接调用的函数,但必须将文件插入站点的正文部分.

另一种解决方案是,如果在页面加载时调用文件,并且如果调用了链接的click事件,则删除.js文件.

我尝试过类似的东西,但没有任何反应:

$(".myLink").click(function(){
    $.getScript("myJavascriptFile.js");
});
Run Code Online (Sandbox Code Playgroud)

还在这里:

$(".myLink").click(function(){
var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = "app_javascript/dragscroll.js";
        $(".myDiv").append(script); // or  $("body").append(script);
});
Run Code Online (Sandbox Code Playgroud)

sha*_*unc 7

嗯,实际上,"没有任何反应"听起来很可能听起来太大声.getScript完全是异步的,所以你应该提供任何代码,它依赖于在load handler中使用这个脚本,这实际上是第二个param.

$.getScript('here_comes_the_script.js', function(){...//here comes the code})

您可以使用一些包装来使事情更灵活 - 通过将事件传递给加载处理程序,如下所示:

getScriptDetectable = function(src) {
     getScript(src, function() {
      $(document).trigger("new_script", {src: src})
     });
}
Run Code Online (Sandbox Code Playgroud)

但是,这当然不能让您免于考虑这段代码是异步的这一事实.

关于删除脚本.实际上没有通用的方法使浏览器"解开"代码.

您可以尝试执行以下操作:

var src = document.querySelector('script');
src.parentNode.removeChild(src);
Run Code Online (Sandbox Code Playgroud)

但是这个已经评估过的文件中的所有代码都已经过评估,因此没有多大意义.