是否有可能在javascript中推迟执行驻留在顶级关闭的自执行函数? (为了便于您理解,jQuery使用它。它在全局范围内具有自执行功能)
我的目标是让整个外部脚本稍后执行而不推迟下载,以便尽快下载并在事件发生后执行(我决定何时发生该事件)。
我也发现了这一点:
https://developer.mozilla.org/en-US/docs/DOM/element.onbeforescriptexecute
听起来像是我想要的“第一部分”。如果我取消,则不执行脚本。但是......我以后如何有效地执行它?
注1:我完全无法控制该外部脚本,所以我无法更改它。
注2:我和谁请求这个并不关心IE是否由于这样的事情而缓慢(是的,真的!(s)他是像我这样的反IE)
编辑(附加信息):
@SLaks服务器发送apache发送的默认头文件(看起来似乎)加上缓存控制头文件,要求缓存12小时。
根据关于域的规则的POV,它是跨域的
我不允许更改其他服务器的定义。不过,我可以试着要求它。
答案 0 :(得分:1)
不幸的是,使用<script>
标记是不可能的,因为你无法获得包含外部脚本的文本,以便将其包装在代码中以延迟它。如果可以,那将通过跨站点请求伪造(CSRF)开辟一个全新的可能性世界。
但是,您可以使用AJAX请求获取脚本,只要它托管在相同的域名中即可。然后你可以推迟执行。
$.ajax({
url: '/path/to/myscript.js',
success: function(data) {
// Replace this with whatever you're waiting for to delay it
$.ready(function() {
eval(data);
});
}
});
修改强>
我从未使用$.getScript()
,因为我使用RequireJS来包含脚本,因此我不知道它是否会对您的需求有所帮助,但请看一下:http://api.jquery.com/jQuery.getScript/
<强> FYI 强> 如果你想知道我在谈论CSRF攻击,Check this out。