您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
修復BUG
// ==UserScript== // @name komica記憶發文自訂名稱跟類別 // @namespace http://tampermonkey.net/ // @version 2.2.3 // @description 修復BUG // @author Grok // @match *://*.komica1.org/* // @exclude *://*.komica1.org/*/src/* // @exclude *://*.komica1.org/*/thumb/* // @exclude *://*.komica1.org/*/pixmicat.php?mode=module* // @grant none // @require https://code.jquery.com/jquery-3.6.0.min.js // @require https://code.jquery.com/ui/1.12.1/jquery-ui.min.js // @license MIT // ==/UserScript== (function() { 'use strict'; // 避免 jQuery 衝突 const $ = window.jQuery.noConflict(true); // 檢查當前網址,排除線程列表頁 if (/mode=module/.test(window.location.search) && /load=mod_threadlist/.test(window.location.search)) { console.log('檢測到線程列表頁(mode=module&load=mod_threadlist),腳本已退出'); return; } // 修補 $.isMobile 以避免 script.js 錯誤 $.isMobile = function() { return /Mobi|Android/i.test(navigator.userAgent); }; // 等待 DOM 加載完成 $(document).ready(function() { // 使用 MutationObserver 監聽動態載入的元素,增加穩定性 const observer = new MutationObserver((mutations, obs) => { initScript(); }); observer.observe(document.body, { childList: true, subtree: true }); // 立即執行初始化 initScript(); function initScript() { // 主題切換兼容邏輯 const $themeSelector = $('#theme-selector'); if ($themeSelector.length) { // 初始化:優先從 localStorage 讀取主題 const savedTheme = localStorage.getItem('theme') || ''; if (savedTheme && $themeSelector.find(`option[value="${savedTheme}"]`).length) { $themeSelector.val(savedTheme); applyTheme(savedTheme); } // 監聽主題選擇器變化,保存到 localStorage $themeSelector.off('change.custom').on('change.custom', function() { const selectedTheme = $(this).val(); localStorage.setItem('theme', selectedTheme); applyTheme(selectedTheme); }); // 應用主題函數 function applyTheme(theme) { const $themeLink = $('link.second-style'); if ($themeLink.length) { if (theme === 'dark.css') { $themeLink.attr('href', '/common/css/' + theme); } else { $themeLink.attr('href', ''); // 或 '/common/css/default.css' } } } } // 檢查 quickreply 表單並啟用拖拽 const $quickReply = $('#quickreply'); if ($quickReply.length) { $quickReply.draggable({ handle: '.quickreply-head', containment: 'window' }); } // 使用前綴避免 localStorage 衝突 const prefix = 'komica-custom-'; // 處理名稱輸入框 const $nameInputFname = $('#fname'); const $nameInputPlaceholder = $("input[placeholder='名稱']:not(.hide)"); const $nameInputs = $().add($nameInputFname).add($nameInputPlaceholder); if ($nameInputs.length) { $nameInputs.each(function() { const $input = $(this); // 避免重複添加按鈕 if ($input.next('.set-name-btn').length) return; const $setNameBtn = $('<button type="button" class="set-name-btn" style="font-family: Arial; margin-left: 5px;">設置名稱</button>'); $input.after($setNameBtn); $setNameBtn.on('click', function() { const customName = prompt('請輸入自訂名稱:', $input.val() || ''); if (customName !== null && customName.trim() !== '') { const maxLength = $input.attr('id') === 'fname' ? 100 : Infinity; const trimmedName = customName.substring(0, maxLength); $input.val(trimmedName); localStorage.setItem(prefix + 'input-name-' + ($input.attr('id') || 'placeholder'), trimmedName); } }); const savedName = localStorage.getItem(prefix + 'input-name-' + ($input.attr('id') || 'placeholder')); if (savedName) { $input.val(savedName); } }); } // 處理類別輸入框 const $categoryInputs = $("input[name='category']"); if ($categoryInputs.length) { $categoryInputs.each(function() { const $input = $(this); // 避免重複添加按鈕 if ($input.next('.set-category-btn').length) return; const $setCategoryBtn = $('<button type="button" class="set-category-btn" style="font-family: Arial; margin-left: 5px;">設置類別</button>'); $input.after($setCategoryBtn); $setCategoryBtn.on('click', function() { const customCategory = prompt('請輸入類別標籤(以逗號分隔):', $input.val() || ''); if (customCategory !== null && customCategory.trim() !== '') { const tags = customCategory.split(',').map(tag => tag.trim()).filter(tag => tag !== ''); if (tags.length > 0) { const categoryValue = tags.join(', '); $input.val(categoryValue); localStorage.setItem(prefix + 'input-category-' + ($input.attr('name') || 'category'), categoryValue); } else { alert('請輸入至少一個有效的標籤!'); } } }); const savedCategory = localStorage.getItem(prefix + 'input-category-' + ($input.attr('name') || 'category')); if (savedCategory) { $input.val(savedCategory); } }); } } }); })();