gpt4 book ai didi

javascript - 更改资源的 url 时如何检查 403 和 404 错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:30 34 4
gpt4 key购买 nike

我正在为 TamperMonkey Chrome 扩展制作用户脚本(这与为 GreaseMonkey 制作用户脚本相同)。

在我的脚本中,我正在通过 document.getElementsByTagName() 迭代一些文档外部资源(img、css、链接、脚本),并且我正在更改它们的 srchref 属性到另一个 url。

在大多数情况下,新 url 可以正确加载,但在某些情况下,它会因我的代理出现 404 或 403 错误而结束。

你能给我一些关于如何正确处理(如果可能)“无法使用新 url 加载资源”的指示吗?此外,如果请求的资源导致重定向的 url,我是否可以被告知资源已重定向(如何检查 302)?

我现在只使用纯 javascript,没有 jquery。但如果 jQuery 可以帮助我,我愿意采用它。

我考虑过针对每个资源 URL 测试来自 XMLHttpRequest 结果的 header ,但在我看来这就像用大炮杀死一只苍蝇。我宁愿使用一个适当的处理程序,它可以在资源不可用的情况下被触发。

编辑:或者,如果 chrome 对我可以检查的每个加载对象都有一种状态属性,我会很好......

最佳答案

我会检查 javascript 中的 document.styleSheets。

这是样式表的工作 jsfiddle:

http://jsfiddle.net/BQxBz/4/

var styleSheetExists = function(name) {
for (var i in document.styleSheets) {
if (typeof document.styleSheets[i] == "object") {
link = document.styleSheets[i].href;
if (link === null) {
continue;
}

if (link.indexOf(name, link.length - name.length) !== -1) {
return true;
}
}
}
return false;
}

$(document).ready(function() {
console.log(styleSheetExists('jquery-ui.css'));
console.log(styleSheetExists('doesnotexist.css'));
});

对于 javascript,我会使用对象检测:从而查看某个对象是否应该由某个脚本加载。例如检测 jQuery:

http://jsfiddle.net/TqQtE/

if (typeof jQuery == "undefined")
{
// load jquery
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js")
document.getElementsByTagName("head")[0].appendChild(fileref)
}

关于javascript - 更改资源的 url 时如何检查 403 和 404 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298617/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com