javascript: 如何让 youtube 上的所有链接都在新标签页中打开

javascript: How to make all links on youtube to open in new tab

示例我有这个显示搜索结果的 youtube link

https://www.youtube.com/results?search_query=himalayas

我正在使用 firefox 及其开发者工具

我正在尝试 运行 这个 js 脚本左键单击页面上的任何 link 以在新选项卡中打开

代码1

var e = document.createElement("base");
e.target = "_blank";
document.head.appendChild(e); 

代码2

var links = document.links;
for (var i = 0; i < links.length; i++) {
     links[i].target = "_blank";
}

两者都添加了target属性

但是在这个脚本之后我也无法在左键单击时在新选项卡上打开 link

知道我该怎么做吗

你要么必须

  1. 删除 href 标签上存在的 yt-simple-endpoint class
    var links = document.links;
    for (var i = 0; i < links.length; i++) {
         links[i].classList.remove('yt-simple-endpoint')
         links[i].target = "_blank";
    }

如果删除 class 它会影响样式,但您始终可以通过重新添加样式来解决这个问题。

  1. 删除附加到 <ytd-app>
  2. 的点击事件侦听器

我认为在 Firefox 中删除事件侦听器并不容易。您也许可以使用 Firebug。 Chrome 有 getEventListeners,所以你可以 运行

const ytdApp = document.getElementsByTagName('ytd-app')[0]
ytdApp.removeEventListener('click', getEventListeners(ytdApp).click[0].listener)

var links = document.links;
for (var i = 0; i < links.length; i++) {
    links[i].classList.remove('yt-simple-endpoint')
    links[i].target = "_blank";
}