tampermonkey - 有没有办法在 Tampermonkey 上加载所需资源时捕获错误?
问题描述
我有一个带有@require 注释的tampermonkey 脚本,该脚本为我提供了某些工具,以便脚本以特定方式工作。
然而,有时这个库不可用(它落后于登录,所以如果没有找到会话,@require 会返回一个带有“未经授权”解释的纯 html)。
我的目标是能够捕获资源是否已成功加载,并且如果它没有提供已处理的错误,我无法做到 - 我只是收到浏览器关于接收 < 符号的投诉出乎意料(因为@require 产生的纯html)。
您对如何解决这个问题有任何想法吗?我检查了 Tampermonkey 文档,但无济于事。
提前致谢
解决方案
您可以使用GM.xmlHttpRequest
从 url 加载源。然后检查responseText
“未经授权”文本的结果,然后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 ...
}
推荐阅读
- ubuntu-20.04 - 如何在 ubuntu 上安装 Janet 语言?
- android - 当用户点击android中的通知时如何打开文件?
- azure - 将设备连接到 Azure 云时,建议使用哪个 - Azure IoT Hub 或 Azure IoT Central?
- node.js - 环回应用程序中间件不工作 - 未找到匹配层错误
- azure - 在应用程序网关中添加带有目标(虚拟机)的后端池
- ansible - 无法从 Ansible 变量中搜索子字符串
- flutter - 在flutter中查询firestore:权限被拒绝,该怎么办
- windows - 是否可以在 Windows 中解密 DRM HLS 内容?
- c# - IConfigurationDbContext 上没有使用 Identity Server 4 的 SaveChanges 方法
- python - 如何在云中托管我的 Python 代码?IBM 或 AWS 或任何东西都可以