// ==UserScript== // @name 解除網頁縮放限制 (Force Enable Zoom) // @namespace http://tampermonkey.net // @version 1.0 // @description 強制解除部分網頁禁止縮放的限制,讓你可以自由放大縮小。 // @author Your Name // @match *://*/* // @grant none // @run-at document-start // @downloadURL https://update.greasyfork.icu/scripts/572392/%E8%A7%A3%E9%99%A4%E7%B6%B2%E9%A0%81%E7%B8%AE%E6%94%BE%E9%99%90%E5%88%B6%20%28Force%20Enable%20Zoom%29.user.js // @updateURL https://update.greasyfork.icu/scripts/572392/%E8%A7%A3%E9%99%A4%E7%B6%B2%E9%A0%81%E7%B8%AE%E6%94%BE%E9%99%90%E5%88%B6%20%28Force%20Enable%20Zoom%29.meta.js // ==/UserScript== (function() { 'use strict'; function forceZoom() { // 找到所有的 meta viewport 標籤 const meta = document.querySelector('meta[name="viewport"]'); if (meta) { // 將 user-scalable 改為 yes,並移除最大縮放限制 let content = meta.getAttribute('content'); // 替換禁止縮放的關鍵字 content = content.replace(/user-scalable\s*=\s*(no|0)/g, 'user-scalable=yes'); content = content.replace(/maximum-scale\s*=\s*[0-9.]+/g, 'maximum-scale=10'); content = content.replace(/minimum-scale\s*=\s*[0-9.]+/g, 'minimum-scale=0.1'); meta.setAttribute('content', content); } else { // 如果沒找到 meta viewport,主動建立一個允許縮放的 const newMeta = document.createElement('meta'); newMeta.name = "viewport"; newMeta.content = "width=device-width, initial-scale=1.0, user-scalable=yes, maximum-scale=10"; document.getElementsByTagName('head')[0].appendChild(newMeta); } } // 立即執行一次 forceZoom(); // 監聽 DOM 變化,防止某些網站動態改回限制 const observer = new MutationObserver(forceZoom); observer.observe(document.documentElement, { attributes: true, subtree: true, attributeFilter: ['content'] }); })();