检测并终止慢速第三方javascript请求

时间:2011-11-09 23:49:17

标签: javascript jquery error-handling

我们在网站上使用了多个跟踪像素来收集有关访问者的统计信息。但是,我们嵌入代码中的一些第三方javascript通常会等待来自其服务器的响应。通常他们的服务器没有正确响应,因此它会导致错误消息以及及时呈现网站HTML元素的问题,这会导致巨大的性能问题。

有没有办法检测第三方javascript何时没有在所需的时间内返回,这样我们就能以某种方式终止对其服务器的调用并继续下一行代码?请注意,使用JQuery.delay()并不是解决此问题的方法。

处理从他们的服务器返回的错误消息我们可以使用Try& Catch(错误),但我不知道如何强制终止对外部服务器的javascript调用。

1 个答案:

答案 0 :(得分:2)

您可以使用缓存加载脚本:

var scriptTag = document.createElement("script");
scriptTag.type = "text/cache";
scriptTag.src = "http://thirdparty.com/foo.js";
scriptTag.onreadystatechange = scriptTag.onload = function() {
    if (scriptTag.readyState == "loaded" || scriptTag.readyState == "complete")
    {
        // it's done loading
    }
}

这将导致脚本像图像一样在后台加载;然后,如果加载,您可以直接调用它们。需要注意的是,如果你有几次超时,它可以消耗所有可用的传出连接。如果您仅序列化第三方Javascripts,那么它们最多只能使用一个连接。

这是head.js使用的技术。您可以使用head.js,但是您可能想要为超时等添加一些额外的逻辑。