1

在 javascript 中,是否有可能推迟执行位于顶层闭包的自执行函数?(为您理解,jQuery 使用 this。它在全局范围内具有自执行功能)

我的目标是让整个外部脚本在以后执行而不延迟它的下载,以便它尽快下载并在事件发生后执行(我决定该事件何时发生)。

我也发现了这个:
https ://developer.mozilla.org/en-US/docs/DOM/element.onbeforescriptexecute

听起来像是我想要的“第 1 部分”。如果我取消,则不会执行脚本。但是然后......我以后如何有效地执行它?

注意1:我完全无法控制那个外部脚本,所以我不能改变它。

注意2:我和谁请求这个都不关心IE是否因为这样的事情而变慢(是的,真的!(s)他像我一样反IE)

编辑(附加信息):
@SLaks 服务器发送 apache 发送的默认标头(看起来如此)加上缓存控制标头排序缓存 12 小时。
从关于域的规则的观点来看,它是跨域的。
我不允许更改有关其他服务器的定义。不过,我可以尝试要求它。

4

1 回答 1

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 /

仅供参考 ,如果您想知道我在谈论 CSRF 攻击的内容,请查看此内容。

于 2013-02-07T16:20:21.860 回答