Greasy Fork is available in English.
选中一个网址后在新标签页跳转
当前为
// ==UserScript==
// @name 检测网址跳转
// @namespace http://tampermonkey.net/
// @version 1.2
// @description 选中一个网址后在新标签页跳转
// @author by小楠
// @match *://*/*
// @icon iconURL https://s21.ax1x.com/2024/09/06/pAZWPXT.png
// ==/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();