如何动态加载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