这个一定很简单。外部 javascript 文件包含:
function Hello() {
alert('Hello');
}
It is getScript()
ed 然后调用一个包含的函数
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.getScript('myscript.js');
Hello();
</script>
I get:
ReferenceError:Hello 未定义
但是如果在 HTML 中引用该脚本<script>
标记它按预期工作
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script src="myscript.js" type="text/javascript"></script>
<script type="text/javascript">
Hello();
</script>
我缺少什么?如何引用在 a 中创建的对象getScript()
编辑脚本?我想使用的原因getScript()
它将脚本加载到ready()
event.
问题是$.getScript()
函数是异步的。当您致电Hello()
函数紧随其后,脚本尚未加载,因此该函数不可用。
使用常规加载脚本<script>
标签同步发生,因此如果您想复制该行为,则必须禁用async
Ajax 调用中的选项。
getScript
单独不支持这一点,因此您可以使用$.ajax
使用适当的选项进行调用:
$.ajax({
url: 'myscript.js',
dataType: 'script',
async: false
});
这将阻止浏览器,直到加载脚本为止。
然而,更好的技术是使用回调,它$.getScript()
确实支持:
$.getScript('myscript.js', function() {
Hello();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)