您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Ouvre dans un nouvel onglet les liens qui mènent à un domaine différent et surveille les changements du DOM
// ==UserScript== // @name Ouvrir les liens externes dans un nouvel onglet avec watcher // @namespace http://tampermonkey.net/ // @version 1.2 // @description Ouvre dans un nouvel onglet les liens qui mènent à un domaine différent et surveille les changements du DOM // @author Morgan // @match *://*/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // Fonction pour vérifier si un lien mène à un domaine différent function isExternalLink(link) { try { const linkURL = new URL(link.href, document.baseURI); return linkURL.hostname !== window.location.hostname; } catch (e) { return false; } } // Fonction pour vérifier si un lien est un lien JavaScript function isJavaScriptLink(link) { const href = link.getAttribute('href'); return href.startsWith('javascript:') || href === '#'; } // Fonction pour mettre à jour les liens function updateLinks(root = document) { const links = root.querySelectorAll('a[href]'); links.forEach(link => { if (!isJavaScriptLink(link) && isExternalLink(link)) { link.setAttribute('target', '_blank'); } }); } // Mettre à jour les liens au chargement de la page updateLinks(); // Configurer un observateur de mutations pour surveiller les modifications du DOM const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes.length) { mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE) { updateLinks(node); } }); } }); }); // Configuration de l'observateur pour observer les ajouts d'enfants dans le DOM observer.observe(document.body, { childList: true, subtree: true }); })();