关于JavaScript:script标签加载后执行前能否修改其内部代码内容
问题解答
该操作无法成功,具体原因如下:
- 浏览器对同步
<script>标签的解析和执行是连续无间隙的串行操作:当浏览器解析到内联<script>标签时,会第一时间提取标签内的代码内容送入JS引擎执行,中间没有预留任何可由其他JS代码介入修改的时间窗口。 - 即使你提前注册
MutationObserver监听DOM节点插入事件,你监听到<script>标签被插入DOM的触发时机,晚于浏览器提取脚本内容的时机,此时修改标签的textContent/innerHTML只会修改DOM节点的属性值,已经无法影响已经送入JS引擎等待执行的代码。 - 如果你要修改的是外部引入的脚本内容,可以通过注册
Service Worker拦截对应脚本的网络请求,修改响应体内容后再返回给浏览器,这种场景下可以实现修改后执行的需求。
内容的提问来源于stack exchange,提问作者zqdlly
相关产品推荐
相关产品推荐

