我正在编写一个Tampermonkey脚本,该脚本可用于从youtube.com/*
重定向到YouTube频道地址。
window.addEventListener ("load", LocalMain, false);
function LocalMain () {
location.replace("https://www.youtube.com/channel/*");
}
脚本运行时,它会重定向到频道URL,然后继续运行并连续重定向。
答案 0 :(得分:2)
在重新分配新的href之前,您需要检查当前pathname
是否包含channel
function LocalMain () {
if(!location.pathname.includes('/channel/')) {
location.replace("https://www.youtube.com/channel/*");
}
}
还请注意,您无需执行窗口加载事件即可完成此操作
答案 1 :(得分:2)
您可以检查该位置是否包含“频道”,然后在更改位置之前返回。
window.addEventListener ("load", LocalMain, false);
function LocalMain () {
if(location.href.indexOf('channel') === -1) return;
location.replace("https://www.youtube.com/channel/*");
}
答案 2 :(得分:2)
进行这种重定向的标准方法,更有效,并且执行速度更快,是调整脚本的metadata 甚至无法在重定向到的页面上运行。
此外,使用// @run-at document-start
可获得更好的响应。
所以您的脚本将变成类似以下内容:
// ==UserScript==
// @name YouTube, Redirect to my channel
// @match https://www.youtube.com/*
// @exclude https://www.youtube.com/channel/*
// @run-at document-start
// ==/UserScript==
location.replace("https://www.youtube.com/channel/UC8VkNBOwvsTlFjoSnNSMmxw");
另外,对于此类“广谱”重定向脚本,请考虑使用location.assign()
,以便您或您的用户可以在重定向过度时恢复历史记录中的原始URL。
答案 3 :(得分:0)
是否将tampermonkey配置为仅在频道URL上不是时运行脚本?
如果没有...,那么您的脚本可能会讽刺地做您想要的事情:每个页面加载一次。脚本将加载新页面。
您可以在脚本中修复此问题,如下所示:
window.addEventListener ('load', localMain, false);
function localMain () {
if (location.href.startsWith('https://www.youtube.com/channel/')) {
return; // exit
}
location.replace('https://www.youtube.com/channel/*');
}