文章摘要
这篇文章介绍了通过JavaScript代码实现的功能:强制所有链接在新标签页打开,同时确保原页面不会跳转。该功能支持动态加载的网站(如油管、知乎等),通过阻止默认事件的冒泡(bubble),绕过这些网站的JavaScript处理。代码通过用户脚本(UserScript)实现,简洁高效,且不会影响网站的其他功能。主要特点包括:
1. **强制新标签页打开**:点击链接后,跳转到新标签页,原页面保持不变。
2. **动态加载网站支持**:成功绕过油管、知乎等动态加载网站的自动跳转功能。
3. **阻止事件冒泡**:通过事件管理,避免默认JavaScript处理,确保用户体验不受影响。
4. **轻量高效**:代码简洁,性能优秀,不会影响网站其他功能。
强制所有链接在新标签页打开
点击链接后,只在新标签打开,原页面不会跳转
支持 油管、知乎、百度等动态加载网站
阻止事件冒泡,绕过 油管 的 JavaScript 处理
轻量高效,不会影响网站其他功能
- // ==UserScript==
- // @name 强制所有链接在新标签页打开
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 让所有链接都在新标签页打开,同时原页面不会变化
- // @match *://*/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- ‘use strict’;
- function openInNewTab(event) {
- const link = event.target.closest(‘a’); // 找到点击的链接
- if (link && link.href && !link.hasAttribute(‘target’)) {
- event.preventDefault(); // 阻止默认行为
- event.stopPropagation(); // 阻止事件冒泡,避免内部 JS 触发跳转
- setTimeout(() => {
- window.open(link.href, ‘_blank’); // 在新标签页打开链接
- }, 50); // 延迟执行,确保兼容
- }
- }
- function observeLinks() {
- document.addEventListener(‘click’, openInNewTab, true);
- }
- observeLinks(); // 监听整个页面点击事件
- })();