我做了一个脚本来自动重定向到英语维基百科和维基词典。但是,在我向维基词典添加功能后,我的脚本不再起作用。
// @match https://*.wikipedia.org/*
// @exclude https://en.wikipedia.org/*
// Change the above to fit your language
// @match https://*.wiktionary.org/*
// @exclude https://en.wiktionary.org/*
// Change the above to fit your language
// Now works with wiktionary!
// @grant none
// @icon https://i.imgur.com/A75OqHr.png
// ==/UserScript==
if (location.hostname == "*.wikipedia.org"){
location.hostname = "en.wikipedia.org" //change me to your language
}
if (location.hostname == "*.wiktionary.org"){
location.hostname = "en.wiktionary.org" //change me to your language
}
*注意:出于反人肉搜索的目的,我省略了一些元数据。
这是你要找的东西吗?
window.location.href = "URL_YOU_WANT_TO_REDIRECT_TO";
请检查一次您的"如果"条件是否正常运行,如果这不是您想要的,请告诉我
==不进行模式匹配。所以它不会帮助你。
如果要包含 wikipedia.org 下的所有子域,只需使用String include(( 方法即可。你可以在这里阅读它。
因此,即使没有模式匹配,也可以通过在字符串上使用include((方法来解决此问题,如下所示:
if (location.hostname.includes("wikipedia.org")){
location.href = "en.wikipedia.org" //change me to your language
}
if (location.hostname.includes("wiktionary.org")){
location.href = "en.wiktionary.org" //change me to your language
}
您正在检查内容为*.wikipedia.org
和*.wiktionary.org
的字符串。您打算使用的逻辑似乎也会导致无限循环。
您可以利用本例中的不等于运算符!==
来防止这种情况,并且也只检查您希望重定向的特定站点。
const redirectToCorrectPage = url => location.hostname !== url ? location.hostname = url : null;
redirectToCorrectPage("en.wikipedia.org")
redirectToCorrectPage("en.wiktionary.org")
一旦你有了以下内容:
// @match https://*.wikipedia.org/*
// @exclude https://en.wikipedia.org/*
无需再次检查location.hostname
,因为上述将在除en.wikipedia.org
以外的所有wikipedia.org
子域(以及https://wikipedia.org/
(上运行。
现在,基本的重定向器用户脚本如下所示:
// ==UserScript==
// @name My Script
// @match https://*.wikipedia.org/*
// @exclude https://en.wikipedia.org/*
// @run-at document-start
// ==/UserScript==
location.hostname = 'en.wiktionary.org';
@run-at document-start
可以防止不必要地加载不需要的页面。