如何让YouTube页面所有链接左键点击时在新标签页打开
核心原因
YouTube 是单页应用(SPA),站内所有链接的默认跳转行为都被平台自身绑定的click事件处理器拦截了,点击后会走前端路由局部更新页面的逻辑,不会触发浏览器原生的<a>标签跳转规则,因此就算给链接添加target="_blank"属性也不会生效。
可行解决方案
直接在全局劫持点击事件,识别到点击链接时主动触发新标签页打开逻辑,同时拦截 YouTube 自身的跳转事件,代码如下:
// 使用捕获阶段监听全局点击,优先级高于YouTube自身绑定的事件 document.addEventListener('click', function(e) { // 匹配点击位置最近的a标签(支持点击链接内的子元素场景) const targetLink = e.target.closest('a'); if (targetLink && targetLink.href) { // 阻止YouTube默认的前端路由跳转 e.preventDefault(); e.stopPropagation(); // 主动在新标签页打开链接 window.open(targetLink.href, '_blank'); } }, true);
该方案天然支持后续滚动加载的新链接,不需要额外监听DOM变动重新给新链接加属性。
原有代码失效说明
- 插入
<base>标签的方案仅对走浏览器原生跳转规则的链接生效,被JS拦截的跳转不受<base>标签约束 - 遍历已有链接加
target的方案仅能处理当前页面已渲染的链接,后续异步加载的内容里的链接不会被处理,同时同样受跳转事件被拦截的影响无法生效
注意事项
如果运行脚本后点击链接没有反应,检查火狐浏览器的弹出窗口拦截设置,给 YouTube 域名开放弹出窗口权限即可。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

