javascript - 有什么方法可以取消/停止/中止 getScript 调用吗?

标签 javascript jquery

所以,我一直在寻找,但似乎没有一种方法可以在执行脚本调用后实际中止/取消/停止脚本调用。

我发现必须使用延迟加载来解决对第三方的非响应脚本调用有点奇怪。使用 json/ajax,确保我可以在其上超时 - 太棒了。但是通过脚本调用,就没有这样的运气了。我认为 jQuerys $.getScript 会允许这种行为。没有?

我希望完成的事情:取消阻塞的 js 调用。

这样的东西行不通吗?

var getScript = $.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
     //
});

var exitOut = setTimeout(function(){
    getScript.abort();
},2000)

根据我一直在阅读的内容,“脚本”请求不能中途中止。

但是,由于 getScript 只是一个 ajax 调用,我希望超时也适用于此。但我的一些测试并未证实这一点?

除了延迟加载还有其他解决方案吗?

最佳答案

BUT, since getScript is just an ajax call, I was hoping that timeout could also apply here.

实际上, getScript not use XHR but a <script> element .因此,abort不工作,timeout ajax 选项两者都不做。

您最好先通过 XHR 加载脚本,然后 manually evaling它:

$.ajax({
    url: "ajax/test.js",
    dataType: "text",
    timeout: 2000
}).done(function(str) {
    $.globalEval(str);
});

关于javascript - 有什么方法可以取消/停止/中止 getScript 调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206566/

相关文章:

javascript - jQuery [object 对象] 问题

javascript - 我怎样才能暂停 JavaScript 直到输入,比如确认/警告框?

javascript - 使拖放功能遍及所有网站,而不仅仅是特定的 div 部分

javascript - 上一篇文章完成后如何运行代码?

javascript - 从页面替换或删除加载原始数据,然后显示到 div 或表格

jquery 工具提示显示延迟

javascript - 使用 jquery 打开对话框

javascript - StackExchange黑名单

javascript - 在 Durandal View 模型中返回函数和返回对象有什么区别?

javascript - 使用 div 的两种方式数据绑定(bind)