在Tampermonkey上加载所需资源时,是否有方法捕获错误



我有一个带有@require注释的tampermonkey脚本,用于一个库,该库为我提供了某些工具,使脚本能够以特定的方式工作。

然而,有时这个库不可用(它落后于登录,因此如果找不到会话,@require会返回一个带有"未经授权"解释的纯html(。

我的目标是能够捕获资源是否成功加载,以及是否没有提供已处理的错误,这不是我无法做到的——我只是收到了浏览器关于收到<符号意外(因为@require产生了纯html(。

你对如何解决这个问题有什么想法吗?我查过坦珀蒙基的文件,但没有用。

提前感谢

您可以使用GM.xmlHttpRequest从url加载源。然后检查结果的CCD_ 2;未经授权的";text,然后用eval()Function()来执行代码,请参阅MDN了解这两者之间的区别。您可以在每次执行脚本时执行此操作,也可以使用GM.getValue/GM.setValue 缓存responseText

GM.xmlHttpRequest({
method: "GET",
url: "https://www.example.com/yourlibrary.js",
onload: function (response) {
if (!response.responseText.startsWith('unauthorized string')) {
window.eval(response.responseText)
main()
} else {
// ask for login
}
},
onerror: function () {
// ask for login
}
})
function main () {
// ... you userscript ...
}

最新更新