🏠 Home 

youtube新标签页打开🙌😁😁😁

支持首页,搜索,频道,个人主页等在新标签打开,你懂的

// ==UserScript==
// @name         youtube新标签页打开🙌😁😁😁
// @namespace    476321082_js
// @version      1.4.2
// @description  支持首页,搜索,频道,个人主页等在新标签打开,你懂的
// @author       neoWorld
// @match        https://www.youtube.com/*
// @icon         https://www.google.com/s2/favicons?domain=youtube.com
// @grant        none
// @license      MIT
// ==/UserScript==
(function () {
"use strict";
const updateAnchorElements = function () {
const anchorElements = document.querySelectorAll("a[href^='/']");
anchorElements.forEach((anchorElement) => {
anchorElement.setAttribute("target", "_blank");
anchorElement.addEventListener("click", (e) => {
e.stopPropagation();
return false;
});
});
};
const getSelectorAtCurPath = function () {
const htmlElement = document.querySelector("html");
return globalVars.selectorPathMap[htmlElement.getAttribute("href")] || {
observeEle: "#page-manager",
aEle: "a[href^='/']",
};
};
const initObserver = function (selector) {
const observeEle = document.querySelector(selector.observeEle);
if (!observeEle) return;
new MutationObserver(() => {
updateAnchorElements();
}).observe(observeEle, {
childList: true,
subtree: true, // 监视子孙节点
});
};
const watchPathChange = function (cb = () => { }) {
window.addEventListener("popstate", cb, true);
};
// init
const globalVars = {
selectorPathMap: {
"/": {
observeEle: "#page-manager",
aEle: "a[href^='/']",
},
"/r###lts": {
observeEle: "#page-manager",
aEle: "a[href^='/']",
},
"/channel": {
observeEle: "#page-manager",
aEle: "a[href^='/'], ytd-grid-playlist-renderer a[href^='/'], #channel a[href^='/']",
},
"/watch": {
observeEle: "#page-manager",
aEle: "a[href^='/'], ytd-video-owner-renderer a[href^='/']",
},
"/playlist": {
observeEle: "#page-manager",
aEle: "#content a[href^='/']",
},
"/user": {
observeEle: "#page-manager",
aEle: "a[href^='/']",
},
"/c": {
observeEle: "#page-manager",
aEle: "ytd-grid-playlist-renderer a[href^='/'], #dismissible a[href^='/']",
},
"/feed": {
observeEle: "#page-manager",
aEle: "a[href^='/']",
},
},
initPath: window.location.href,
intervalDefaultTimes: 10,
intervalTimes: 10,
};
const selector = getSelectorAtCurPath();
window.onload = () => {
initObserver(selector);
updateAnchorElements();
};
watchPathChange(() => {
initObserver(selector);
updateAnchorElements();
});
})();