// ==UserScript== // @name 检测网址跳转 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 选中一个网址后在新标签页跳转 // @author by小楠 // @match *://*/* // @icon iconURL https://s21.ax1x.com/2024/09/06/pAZWPXT.png // @downloadURL none // ==/UserScript== let isSelecting = false; let selectedText = ''; let hasPattern = false; let showedPopup = false; let currentPageUrl = window.location.href; let isDetectionEnabled = true; // 默认开启检测 // 创建一个设置按钮 const createSettingsButton = () => { const button = document.createElement('button'); button.textContent = isDetectionEnabled? '禁用检测' : '启用检测'; button.style.position = 'fixed'; button.style.top = '10px'; button.style.right = '10px'; button.addEventListener('click', toggleDetection); // 设置按钮图标 const img = new Image(); img.src = GM_getResourceURL('iconURL'); button.appendChild(img); document.body.appendChild(button); }; // 切换检测状态 const toggleDetection = () => { isDetectionEnabled =!isDetectionEnabled; const button = document.querySelector('button'); if (button) { button.textContent = isDetectionEnabled? '禁用检测' : '启用检测'; } }; document.addEventListener('mousedown', function () { isSelecting = true; }); document.addEventListener('mouseup', function () { isSelecting = false; if (window.getSelection().toString()) { selectedText = window.getSelection().toString(); hasPattern = selectedText.includes('http://') || selectedText.includes('https://') || selectedText.includes('www.'); } else { selectedText = ''; hasPattern = false; } }); let checkAndPrompt = function () { if (hasPattern &&!showedPopup && window.location.href === currentPageUrl && isDetectionEnabled) { let urlRegex = /(https?:\/\/[^\s]+)/g; let urls = selectedText.match(urlRegex); if (urls) { let urlToCopy = urls[0]; navigator.clipboard.writeText(urlToCopy).then(() => { let confirmMessage = `是否要跳转 ${urlToCopy}?`; if (confirm(confirmMessage)) { window.open(urlToCopy, '_blank'); // 取消选中的文本 if (window.getSelection) { if (window.getSelection().empty) { // Chrome window.getSelection().empty(); } else if (window.getSelection().removeAllRanges) { // Firefox window.getSelection().removeAllRanges(); } } } else { showedPopup = true; } }); } } else if (!hasPattern || window.location.href!== currentPageUrl ||!isDetectionEnabled) { showedPopup = false; } }; document.addEventListener('selectionchange', checkAndPrompt); document.addEventListener('mouseup', checkAndPrompt); createSettingsButton();