如何在Chromium内核Edge浏览器中编辑实时运行的JavaScript代码
问题说明
已加载至QA环境的待测试网页存在一处硬编码日期值,需要修改该值让对应if条件判断通过,满足测试、演示需求。
实际操作中在Edge浏览器Elements(元素)面板编辑<script>标签内的JavaScript代码时修改不生效:元素面板显示脚本内容已被编辑,但Sources(源代码)面板对应脚本无变化,浏览器始终执行服务器初始返回的代码,对应现象截图如下:

需要明确Chromium内核Edge浏览器中正确编辑页面实时运行JavaScript代码、实现预期修改效果的操作方法。
原因说明
页面初始加载完成时,所有内嵌、外链JS都已经跑完了解析、执行流程。你在Elements面板改<script>标签里的内容,本质只是改了DOM树里的一段文本,浏览器根本不会重新解析执行这段改完的代码,自然不会对运行时逻辑产生任何效果。
可行操作方法
- 临时改效果(不用刷新页面)
直接打开DevTools的Console面板,手动覆写运行时的变量、函数就行。如果硬编码日期是全局变量,直接在控制台给变量赋符合if判断要求的新值,回车执行就生效;如果日期写在某个点击、交互触发的函数内部,直接在控制台重新定义一遍同名函数覆盖旧的就行,后续触发交互时就会走你写的新逻辑。 - 持久修改(刷新也不失效)
用DevTools自带的Local Overrides(本地覆盖)功能,步骤如下:- 按F12调出DevTools,切到Sources面板
- 左侧边栏找
Overrides标签,要是默认没显示,点侧边栏的>>按钮在展开的菜单里选就行 - 点
Select folder for overrides,选本地一个空文件夹存修改后的文件,浏览器顶部弹权限请求的时候点允许 - 切回
Page标签,找到你要改的JS文件(不管是页内写的内嵌脚本还是外链引入的JS都支持),在右侧编辑区找到硬编码的日期改成目标值,按Ctrl+S(macOS按Cmd+S)保存 - 改完的文件会自动存到你之前选的本地文件夹里,这时候刷新页面,浏览器会优先读你改好的本地文件,不会再拉服务器上的原始脚本,修改效果一直有效。
提醒:如果你要改的是页面一加载就会执行的初始化逻辑,改完一定要刷新页面,才能让新代码在初始化阶段执行,拿到你要的效果。别再去Elements面板改script标签了,纯纯白费功夫。
内容的提问来源于stack exchange,提问作者Rider Harrison
相关产品推荐
相关产品推荐

