当外部JavaScript或CSS资源加载失败时检测并记录
我对外部js和css资源有多个当外部JavaScript或CSS资源加载失败时检测并记录,javascript,jquery,css,http,timeout,Javascript,Jquery,Css,Http,Timeout,我对外部js和css资源有多个引用。大多数情况下,这些都是用于第三方分析等方面。有时(轶事)这些资源无法加载,通常导致浏览器超时。当外部JavaScript或CSS资源无法加载时,是否可以检测并登录服务器 我正在考虑某种类型的延迟加载机制,当失败时,将调用一个特殊的URL来记录此失败。有什么建议吗 我认为会发生什么: 用户点击我们的页面,服务器端成功处理并提供页面服务 在客户端,HTML头试图连接到我们的第三方集成合作伙伴,通常是通过以“开始”的javascript包含http://www.so
引用。大多数情况下,这些都是用于第三方分析等方面。有时(轶事)这些资源无法加载,通常导致浏览器超时。当外部JavaScript或CSS资源无法加载时,是否可以检测并登录服务器
我正在考虑某种类型的延迟加载机制,当失败时,将调用一个特殊的URL来记录此失败。有什么建议吗
我认为会发生什么:
因此,即使我的网站已经启动,其他一切都正常运行,仅仅因为这一次调用第三方服务器失败,HTML页面标题中的一次调用失败,我们仍然无法启动。您可以在JavaScript中查找对象的存在,例如查看是否加载了jQuery
if (typeof jQuery !== 'function') {
// Was not loaded.
}
您还可以检查是否缺少CSS样式,例如,如果您知道某个CSS文件将背景颜色设置为#000
if ($('body').css('backgroundColor') !== 'rgb(0, 0, 0)') {
// Was not loaded.
}
当这些失败时,您可以向服务器发送一个XHR以记录这些失败。对js名称和会话cookie进行哈希,并以普通格式发送js名称和哈希。服务器端,进行相同的散列,如果两者都是相同的日志,如果不是,则假定这是滥用。如果您的应用程序/页面依赖于JS,您可以使用JS加载内容,我知道这很混乱。当使用JS加载这些内容时,您可以使用回调,这样您就可以只拥有加载内容的功能,而不必担心没有加载的内容
var script = document.createElement("script");
script.type = "text/javascript";
script.src = 'http://domain.com/somefile.js';
script.onload = CallBackForAfterFileLoaded;
document.body.appendChild(script);
function CallBackForAfterFileLoaded (e) {
//Do your magic here...
}
我通常会让这变得更复杂一些,因为JS和文件的数组相互依赖,如果它们不加载,那么我就有一个错误状态
我忘了提到,显然我只是展示如何创建一个JS标记,你必须为你想要加载的其他类型的文件创建你自己的方法
希望这会有帮助,干杯服务人员呢?我们可以使用它拦截所有http请求,并获取响应代码以记录外部资源是否加载失败。如果整个页面加载失败,我无法对任何内容进行哈希处理。请看我对这个问题所做的编辑以获得澄清。我的意思是,在你的页面功能正常后,你可以将其与延迟加载第三方js相结合;在js加载失败的情况下,用名称和哈希值ping您的
js\u failed\u logger.php
。你的问题意味着你关心的是这个被利用的问题,而不是如何实现它。谢谢。我想我最初对如何实现它感兴趣。如果它能工作,我就可以找到保护它的方法。如果页面加载失败,我就不能做这两件事。请参阅我对问题的编辑以获得澄清。这或多或少是我想要的。我也发现了这种技术:我猜你的意思是script.onload=callbackforafterfileload代码>,没有()
是的,很抱歉@hippietrail,请从该URL中删除#comment10730182_538848。另请参见