JavaScript原生方法被覆盖后的恢复方案

作者:木棉

时间:2026-10-23

浏览:244

当JavaScript原生方法被意外覆盖时,可通过创建隔离环境恢复。本文介绍两种核心方案:利用iframe元素的contentWindow获取纯净上下文,或通过window.open打开新窗口后关闭以提取原生对象。这两种方法均能有效绕过当前页面的污染,重新赋值被篡改的原生API。

文章目录

实现原理

实现原理

若JavaScript原生方法遭到覆盖且未将其重新指向新变量,将导致功能失效。恢复的关键在于重新获取原始方法。其核心思路是构建一个全新的window对象,从中提取原生方法并进行重新赋值。

使用iframe实现

使用iframe实现

第一步,利用document.createElement方法创建一个iframe元素。


var iframe = document.createElement("iframe");
document.body.appendChild(iframe)

第二步,获取该iframe内部的window对象。


var iframeWin = iframe.contentWindow;

第三步,将提取到的原生方法赋值给当前页面的对应属性,即可完成恢复。


window.console = iframeWin.console;

使用window.open方法实现

使用window.open方法实现

调用window.open会打开一个新窗口并返回一个新的window对象。因此,可以通过这种方式获取纯净的window对象,进而提取原生方法。


var win = window.open(); //获取对象
win.close(); //将打开的窗口关闭
window.console = win.console;

以上关于JavaScript原生方法被覆盖后重新赋值的实现方式即为全部内容,供参考。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章