禁用网页双击缩放功能
// ==UserScript==
// @name 禁止网页双击缩放
// @namespace https://viayoo.com/
// @version 1.3
// @description 禁用网页双击缩放功能
// @author DeepSeek
// @license MIT
// @match *://*/*
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
let scriptEnabled = true;
let doubleClickListener = null;
let touchEndListener = null;
let lastTouchEnd = 0;
let disableCommand = null;
let enableCommand = null;
// 初始化脚本功能
function initScript() {
// 移除现有监听器
if (doubleClickListener) {
document.removeEventListener('dblclick', doubleClickListener, { capture: true });
}
if (touchEndListener) {
document.removeEventListener('touchend', touchEndListener, { capture: true });
}
if (scriptEnabled) {
// 阻止双击缩放行为
doubleClickListener = function(event) {
event.preventDefault();
};
// 移动端双击处理
touchEndListener = function(event) {
const now = Date.now();
if (now - lastTouchEnd < 300) {
event.preventDefault();
}
lastTouchEnd = now;
};
document.addEventListener('dblclick', doubleClickListener, { capture: true, passive: false });
document.addEventListener('touchend', touchEndListener, { capture: true, passive: false });
}
}
// 创建油猴脚本菜单
function createScriptMenu() {
// 注册菜单命令
disableCommand = GM_registerMenuCommand('禁用双击缩放阻止', function() {
scriptEnabled = false;
initScript();
updateMenuCommands();
});
enableCommand = GM_registerMenuCommand('启用双击缩放阻止', function() {
scriptEnabled = true;
initScript();
updateMenuCommands();
});
// 初始更新菜单状态
updateMenuCommands();
}
// 更新菜单命令状态
function updateMenuCommands() {
if (disableCommand) GM_unregisterMenuCommand(disableCommand);
if (enableCommand) GM_unregisterMenuCommand(enableCommand);
if (scriptEnabled) {
disableCommand = GM_registerMenuCommand('禁用双击缩放阻止', function() {
scriptEnabled = false;
initScript();
updateMenuCommands();
});
} else {
enableCommand = GM_registerMenuCommand('启用双击缩放阻止', function() {
scriptEnabled = true;
initScript();
updateMenuCommands();
});
}
}
// 初始化
function init() {
initScript();
createScriptMenu();
}
// 启动脚本
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();