我们正在使用我们网站上的跟踪像素数来收集有关访问者的统计信息。但是,我们嵌入代码中的某些第三方javascript通常会在等待其服务器的响应。通常,他们的服务器无法正确响应,因此会导致错误消息以及及时渲染网站HTML元素的问题,从而导致巨大的性能问题。

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

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

最佳答案

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

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
    }
}

这将导致脚本像图像一样在后台加载;您可以在加载后直接致电给他们。需要注意的是,如果您有几个超时时间,则可能消耗所有可用的传出连接。如果仅序列化第三方Java脚本,则它们最多应消耗一个连接。

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

10-04 21:26