我们在我们的网站上使用跟踪像素的数量来收集有关我们访问者的统计数据。但是,我们嵌入代码中的一些第三方 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
}
}
这将导致脚本像图像一样在后台加载;如果它们加载,您可以直接调用它们。需要注意的是,如果您有多个超时,它会消耗所有可用的传出连接。如果您只序列化第 3 方 Javascript,那么它们最多应该使用一个连接。
这是 head.js 使用的技术.您可能只使用 head.js,但您可能想要添加一些额外的逻辑来处理超时等等。
关于javascript - 检测和终止缓慢的第三方 javascript 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073346/