编程语言
首页 > 编程语言> > 如何动态加载Javascript文件并立即使用它们?

如何动态加载Javascript文件并立即使用它们?

作者:互联网

我正在使用JQuery在网页的正文选项卡中动态注入脚本标记.我有类似的东西:

function addJS(url) {
  $("body").append('<script type="text/javascript" src='+url+'></script>'); 
}

我以这种方式添加了几个脚本,并尝试使用它们. E.G:

lib.js

function core() {...}
alert("I'am here !");

init.js

addJS("lib.js");
c = new core();

的test.html

<html>
  <head>
    <title>test</title>        
    <script type="text/javascript" src="init.js"></script> 
  </head>
  <body>
     Hello
  </body>
</html>

加载test.html弹出“我在这里”然后最终出现错误“核心未定义”.当然合并两个JS文件将使它们完美地工作.

我只是不明白o_O.

编辑

我简化了这个例子,但杰夫回答让我明白这是一个错误.所以这里有一些细节:

当重新加载时,init.js不在test.html的头部,因为我用一个书签上的代码注入了它.

所以真正的执行过程如下:

reload test.html>运行bookmarklet>插入jquery和init.js>插入了lib.js.

对困惑感到抱歉.

编辑2

现在我有我的问题的解决方案(这很快:-))但我仍然对我的问题的答案感兴趣.为什么会出错?

解决方法:

您得到“核心未定义”错误,因为脚本是异步加载的.这意味着您的浏览器将在后台开始加载lib.js,并继续执行init.js,然后在lib.js加载完成之前遇到“new core()”.

getScript函数有一个回调,将在脚本加载完成后触发:

$.getScript('lib.js', function() {
    var c = new core();
});

标签:javascript,bookmarklet
来源: https://codeday.me/bug/20190717/1485503.html