您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
將選定的元素在背景分頁或新分頁開啟
当前为
// ==UserScript== // @name Open Elements in Background Tab // @namespace http://tampermonkey.net/ // @version 0.7 // @description 將選定的元素在背景分頁或新分頁開啟 // @author You // @match https://tixcraft.com/ticket/area/* // @grant GM_openInTab // @grant GM_getValue // @grant GM_setValue // @license MIT // ==/UserScript== (function() { 'use strict'; // 設置預設值:true 為背景開啟,false 為新分頁開啟 const OPEN_IN_BACKGROUND = GM_getValue('openInBackground', true); // 在頁面頂部添加切換按鈕 function addToggleButton() { const button = document.createElement('button'); button.style.position = 'fixed'; button.style.top = '10px'; button.style.right = '10px'; button.style.zIndex = '9999'; button.style.padding = '5px 10px'; button.style.backgroundColor = '#f0f0f0'; button.style.border = '1px solid #ccc'; button.style.borderRadius = '4px'; button.style.cursor = 'pointer'; function updateButtonText() { const currentValue = GM_getValue('openInBackground', true); button.textContent = `當前模式: ${currentValue ? '背景開啟' : '新分頁開啟'}`; } updateButtonText(); button.onclick = function() { const currentValue = GM_getValue('openInBackground', true); GM_setValue('openInBackground', !currentValue); updateButtonText(); }; document.body.appendChild(button); } // 從頁面腳本中提取 areaUrlList function extractAreaUrlList() { const scripts = document.getElementsByTagName('script'); let urlList = {}; for (const script of scripts) { if (script.textContent.includes('var areaUrlList =')) { try { const match = script.textContent.match(/var areaUrlList = (\{[^;]+\});/); if (match && match[1]) { urlList = JSON.parse(match[1]); console.log('Successfully extracted areaUrlList:', urlList); } } catch (e) { console.error('Error parsing areaUrlList:', e); } } } return urlList; } function init() { addToggleButton(); const urlList = extractAreaUrlList(); // 使用 capture 階段來確保我們的處理器最先執行 document.addEventListener('click', function(event) { const clickedElement = event.target.closest('a[id]'); if (clickedElement && event.ctrlKey) { // 阻止事件繼續傳播和預設行為 event.preventDefault(); event.stopPropagation(); event.stopImmediatePropagation(); const elementId = clickedElement.id; const url = urlList[elementId]; if (url) { const openInBackground = GM_getValue('openInBackground', true); console.log('Opening URL:', url, 'for ID:', elementId, 'in background:', openInBackground); GM_openInTab(url, { active: !openInBackground }); } else { console.log('No URL found for ID:', elementId); } return false; } }, true); // 額外添加一個事件攔截器到具體的連結上 document.querySelectorAll('a[id]').forEach(link => { link.addEventListener('click', function(event) { if (event.ctrlKey) { event.preventDefault(); event.stopPropagation(); event.stopImmediatePropagation(); return false; } }, true); }); } // 如果 DOM 已經加載完成,直接執行 if (document.readyState === 'complete' || document.readyState === 'interactive') { init(); } else { // 否則等待 DOM 加載完成 document.addEventListener('DOMContentLoaded', init); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址