GM_webRequest和_GM_webRequest使用
本帖最后由 探索1979 于 2023-10-8 16:35 编辑GM_webRequest是Tampermonkey提供的api,请问下面的_GM_webRequest那个平台提供的api 或者自定义,如果是平台提供的api,请大神提供官方api文档
var _GM_webRequest = /* @__PURE__ */ (() => typeof GM_webRequest != "undefined" ? GM_webRequest : void 0)();
function scrapingOn() {
_GM_webRequest(
[
{
selector: "https://xxxx*",
action: "cancel"
},
{
selector: "https://xxxx*",
action: {
redirect: "https://xxxx"
}
}
],
(info) => {
switch (info) {
case "cancel":
scraperPageStore.setState({
pageContentLoaded: true
});
break;
case "redirect":
scraperPageStore.setState({
isNewChapter: true
});
break;
}
}
);
preRenderContainerObserver.observe(document.documentElement, {
childList: true,
subtree: true
});
const unsub = subscribePageContentLoaded();
scraperPageStore.setState({
pageContentLoadedCleanUp: getPageContentLoadedCleanUpFunction(unsub)
});
}
function scrapingOff() {
scraperPageStore.getState().pageContentLoadedCleanUp();
preRenderContainerObserver.disconnect();
_GM_webRequest([], () => {
});
} 本帖最后由 kihlh 于 2023-10-8 18:25 编辑
其实从全局里面获取 fetch 更好用,这个api太古老了也太繁琐了
头部添加 // @grant unsafeWindow
// ==UserScript==
// @grant unsafeWindow
// ==/UserScript==
try { if (typeof fetch === "undefined") { if (typeof unsafeWindow !== "undefined") fetch = unsafeWindow.fetch } } catch (E) { }
fetch("https://www.52pojie.com").then(data=>data.text()).then(data=>{
console.log(data);
})
如果您想了解官方文档:https://www.tampermonkey.net/documentation.php?locale=en
您所提及的API就在其中
kihlh 发表于 2023-10-8 18:23
其实从全局里面获取 fetch 更好用,这个api太古老了也太繁琐了
头部添加 // @grant unsafeW ...
_GM_webRequest,这前面多一个“_”是什么功能,大神
var _GM_webRequest = /* @__PURE__ */ (() => typeof GM_webRequest != "undefined" ? GM_webRequest : void 0)();
他定义了一个 _GM_webRequest应该是为了防止找不到 GM_webRequest导致程序无法执行
typeof GM_webRequest != "undefined" ? GM_webRequest : void 0
这是一句三元
typeof GM_webRequest在js里面是判断变量类型这边他判断的是 GM_webRequest != "undefined"
代表了如果 GM_webRequest 这个东西如果存在则返回 GM_webRequest
所以我们现在就可以理解为
_GM_webRequest = GM_webRequest 没有则返回undefined (void 0)
他的作用我们假设GM_webRequest 没有被引入
if(!_GM_webRequest ){console.log("没有这个函数 但是我可以在这里另外处理 不会直接报错")}
if(!GM_webRequest ){console.log("直接报错 因为全局中不存在GM_webRequest")}
kihlh 发表于 2023-10-8 18:23
其实从全局里面获取 fetch 更好用,这个api太古老了也太繁琐了
头部添加 // @grant unsafeW ...
大佬提供api文档,里面的的示例是这样书写的没带“_”,是什么原因,_GM_webRequest 我在4楼已经很详细的解析了为什么会有_
你可以把_理解为copyGM_webRequest kihlh 发表于 2023-10-9 16:09
我在4楼已经很详细的解析了为什么会有_
你可以把_理解为copyGM_webRequest
谢谢大佬
页:
[1]