将脚本执行推迟一段时间

defer script execution for some time

本文关键字:一段时间 推迟 执行 脚本      更新时间:2023-09-26

在javascript中,是否可以推迟执行驻留在顶级闭包中的自执行函数?(为了便于理解,jQuery使用了这个。它在全局范围内具有自执行功能)

我在这里的目标是让整个外部脚本在以后的时间执行,而不推迟它的下载,这样它就可以尽快下载并在事件发生后执行(我决定事件发生的时间)。

我还发现:
https://developer.mozilla.org/en-US/docs/DOM/element.onbeforescriptexecute

听起来像是我想要的"第一部分"。如果我取消,脚本将不会执行。但是。。。我以后如何有效地执行它?

注意1:我完全无法控制外部脚本,所以我无法更改它。

注意2:我和要求这样做的人都不在乎IE是否因为这样的事情而缓慢(是的,是的!他和我一样反对IE)

编辑(附加信息):
@SLaks服务器发送apache发送的默认标头(看起来是这样),再加上一个缓存控制标头,命令缓存12小时
从关于域的规则的POV来看,它是跨域的
我不被允许更改有关其他服务器的定义。不过,我可以试着要求

不幸的是,无法使用<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);
        });
    }
});

编辑自从我使用RequireJS包含脚本以来,我自己从未使用过$.getScript(),所以我不知道它是否有助于满足您的需求,但请看一下:http://api.jquery.com/jQuery.getScript/

仅供参考如果你想知道我在说什么CSRF攻击,看看这个。