调用已被调用的本机javascript函数;抹去;通过网页

调用已被调用的本机javascript函数;抹去;通过网页,javascript,Javascript,假设一个网页做到了这一点: window.alert=console.info 如何通过浏览器控制台恢复原始的alert方法以恢复模式 我尝试访问窗口。prototype但它不存在。我还想知道这样的过程是否普遍存在(例如,如果String.*被网站删除/重新定义,或者网站是否创建了console.log=window.alert)。您可以做的是创建一个iframe将其附加到页面,然后从该iframe复制alert方法 //someone did this window.alert = null;

假设一个网页做到了这一点:

window.alert=console.info

如何通过浏览器控制台恢复原始的
alert
方法以恢复模式


我尝试访问
窗口。prototype
但它不存在。我还想知道这样的过程是否普遍存在(例如,如果
String.*
被网站删除/重新定义,或者网站是否创建了
console.log=window.alert
)。

您可以做的是创建一个iframe将其附加到页面,然后从该iframe复制alert方法

//someone did this
window.alert = null;

//you are doing this
var frame = document.createElement('iframe');
document.body.appendChild(frame);
window.alert = frame.contentWindow.alert.bind(window);
document.body.removeChild(frame);

如果你能为你的函数找到一个多边形填充,你可以把它插回去。在您的情况下,我不认为
窗口的polyfill.alert
。可能存在重复,因为指向的重复目标只包含过时的答案,我更倾向于将该窗口作为此窗口的副本关闭…是否有一种方法不依赖于
iframe
,也不依赖于更改页面内容?您可以创建新窗口并从中复制警报