您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add notes column and ensure correct column order with proper header (identifier | notes | action)
当前为
// ==UserScript== // @name FiveGuard Notes (Fixed # Edited coderbirisi) // @namespace http://tampermonkey.net/ // @version 1.6 // @description Add notes column and ensure correct column order with proper header (identifier | notes | action) // @author R4Z0R - edited @coderbirisi // @contributor coderbirisi - edited & fixed v1.6 // @match *://*/* // @grant GM_getValue // @grant GM_setValue // @license MIT // ==/UserScript== (function () { 'use strict'; const style = ` .note-input { width: 100%; padding: 3px 6px; font-size: 13px; border: 1px solid #ccc; border-radius: 4px; } `; const styleSheet = document.createElement('style'); styleSheet.textContent = style; document.head.appendChild(styleSheet); function loadNote(id) { return GM_getValue(id, ''); } function saveNote(id, note) { GM_setValue(id, note); } function fixTableHeader() { const table = document.getElementById("Permissions_AlternativePermissions"); if (!table) return; const headerRow = table.querySelector("thead tr"); if (!headerRow) return; const ths = headerRow.querySelectorAll("th"); if (ths.length === 2) { const notesTh = document.createElement("th"); notesTh.textContent = "Notes"; headerRow.insertBefore(notesTh, ths[1]); } } function updateNotesUI() { const rows = document.querySelectorAll('tr[id^="Permissions_AlternativePermissions_"]'); rows.forEach(row => { const id = row.id; const cells = row.children; if (cells.length === 2) { const actionCell = cells[1]; const noteCell = document.createElement('td'); const noteInput = document.createElement('input'); noteInput.className = 'note-input'; noteInput.type = 'text'; noteInput.placeholder = 'Enter note...'; noteInput.value = loadNote(id); noteInput.addEventListener('change', () => { saveNote(id, noteInput.value); }); noteInput.addEventListener('keyup', (e) => { if (e.key === 'Enter') { saveNote(id, noteInput.value); noteInput.blur(); } }); noteCell.appendChild(noteInput); const identifierCell = cells[0]; row.innerHTML = ''; row.appendChild(identifierCell); row.appendChild(noteCell); row.appendChild(actionCell); } }); } const observer = new MutationObserver(() => { fixTableHeader(); updateNotesUI(); }); observer.observe(document.body, { childList: true, subtree: true }); fixTableHeader(); updateNotesUI(); })();