有人可以解释一下jQuery getScript()
函数的行为吗?
考虑一个JavaScript文件test.js
:
var tmp = 'a variable';
alert('here');
当通过html的
test.js
标记加载<script>
时,一切工作正常:tmp
变量在全局范围内可用,并出现一个消息框。我正在尝试通过以下代码获得类似的行为:
<script>
$(document).ready(function() {
$.getScript("static/js/proto/test.js");
setTimeout(function() {
// at this point tmp should be available
// in the global scope
alert(tmp);
} , 2000); // 2 seconds timeout
}
</script>
但是浏览器的错误控制台报告“未定义的变量tmp”错误。
我究竟做错了什么?
谢谢。
最佳答案
$ .getScript可能是异步的,请使用callback参数:
$.getScript("static/js/proto/test.js", function() {
// here you are sure that the script has been executed
});
请参阅$ .getScript的文档:http://api.jquery.com/jQuery.getScript