JavaScript原生方法被覆盖后的恢复方案
作者:木棉时间:2026-10-23 02:32:11浏览:245
当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原生方法被覆盖后重新赋值的实现方式即为全部内容,供参考。
作者最新文章
JS合并多个数组的三种方法:concat、spread与flat
2026-11-05 17:39:45
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
