如何在Firefox 60客户端手动垫片globalThis与fromEntries?
解决Firefox 60中globalThis和fromEntries兼容问题的方案
方法一:使用用户脚本(Tampermonkey/Greasemonkey)
用户脚本可在页面加载前注入垫片代码,直接基于es-shims的思路实现兼容:
- 安装Firefox 60兼容的Tampermonkey版本(比如4.14版)
- 创建新脚本,通过
@match指定需要适配的网站(或用@match *://*/*实现全局生效) - 注入以下垫片代码:
// 垫片globalThis if (typeof globalThis === 'undefined') { Object.defineProperty(window, 'globalThis', { value: window, writable: true, configurable: true }); } // 垫片Object.fromEntries if (!Object.fromEntries) { Object.fromEntries = function(entries) { return entries.reduce(function(obj, [key, value]) { obj[key] = value; return obj; }, {}); }; }
- 保存脚本后刷新目标网站即可生效
方法二:自定义浏览器扩展
若不愿使用用户脚本,可自行打包简单扩展实现全局垫片:
- 创建文件夹,新建
manifest.json文件:
{ "manifest_version": 2, "name": "ES6+ Shims for FF60", "version": "1.0", "content_scripts": [ { "matches": ["*://*/*"], "js": ["shims.js"], "run_at": "document_start" } ] }
- 新建
shims.js文件,内容与上述用户脚本的垫片代码一致 - 在Firefox 60的附加组件页面,选择“从文件安装附加组件”,加载该文件夹打包的zip文件(或直接加载临时扩展)
注意事项
- 全局垫片可能与部分网站代码冲突,建议先针对有问题的网站单独适配,不要直接全局启用
- 上述为简化版垫片,若需更完整的es-shims兼容,可参考es-shims仓库的官方实现代码,复制对应逻辑到脚本或扩展中
内容的提问来源于stack exchange,提问作者Civ01
相关产品推荐
相关产品推荐

