如何阻止Gmail调整浏览器窗口大小?客户端有效方法求助
阻止Gmail邮件调整浏览器窗口大小的方法
一、浏览器原生设置(无需脚本)
Chrome
- 打开Chrome设置,进入「隐私和安全」→「网站设置」→「权限」→「窗口弹出和重定向」
- 开启「不允许网站调整窗口大小」选项,全局禁用所有网站修改窗口尺寸的权限,包括触发问题的Gmail邮件内容。
Firefox
- 在地址栏输入
about:config并回车,确认风险提示后进入配置页面 - 搜索
dom.disable_window_move_resize,将其值改为true,即可全局禁用网页调整窗口大小的功能。
二、用户脚本(针对性拦截Gmail)
如果不想全局禁用,只想针对Gmail生效,可以用Tampermonkey/Greasemonkey脚本,覆盖所有可能调整窗口的方法:
// ==UserScript== // @name 禁止Gmail调整窗口大小 // @match https://mail.google.com/* // @run-at document-start // 确保在页面脚本前运行 // @grant none // ==/UserScript== (function() { 'use strict'; // 空操作函数,替代调整窗口的方法 const noop = () => {}; window.resizeTo = noop; window.resizeBy = noop; // 拦截直接修改窗口尺寸属性的尝试 ['innerWidth', 'innerHeight', 'outerWidth', 'outerHeight'].forEach(prop => { Object.defineProperty(window, prop, { get: () => window[`__${prop}`] || window[prop], set: () => {}, configurable: false }); }); // 处理邮件内的iframe(如果是嵌入式内容触发的调整) const handleIframes = () => { document.querySelectorAll('iframe').forEach(iframe => { try { const iframeWin = iframe.contentWindow; iframeWin.resizeTo = noop; iframeWin.resizeBy = noop; } catch (e) { // 跨域iframe无法访问,忽略即可 } }); }; // 页面加载时处理iframe,同时监听后续动态加载的iframe window.addEventListener('load', handleIframes); document.addEventListener('DOMNodeInserted', (e) => { if (e.target.tagName === 'IFRAME') { handleIframes(); } }); })();
脚本说明
@run-at document-start确保脚本在页面自身的JavaScript运行前生效,避免页面先调用了resize方法- 不仅重定义
resizeTo,还覆盖了resizeBy,同时拦截直接修改窗口尺寸属性的操作 - 处理邮件中的iframe,覆盖可能通过嵌入式内容触发的窗口调整
三、补充排查
如果以上方法仍无效,可尝试:
- 打开浏览器开发者工具(F12),切换到「Sources」面板,设置
resize相关断点,追踪触发调整的代码 - 访问
https://mail.google.com/mail/u/0/?labs=0开启Gmail安全模式,排查实验室功能导致的冲突
内容的提问来源于stack exchange,提问作者Christopher Harwood
相关产品推荐
相关产品推荐

