调用已被网页“擦除”的本地JavaScript函数

7
假设一个网页这样做了:
window.alert = console.info;
我该如何通过浏览器控制台恢复原始的alert方法以获取模态框?
我尝试访问window.prototype,但它不存在。我还想知道是否存在这样的过程(例如,如果String.*被网站擦除/重新定义,或者网站使用console.log = window.alert)。

如果你能找到一个可以实现你函数的Polyfill,你就可以直接插入回去。但在你的情况下,我不认为有window.alert的polyfill。 - Zenoo
1
可能是Bringing back an "overridden" window method的重复问题。 - bastos.sergio
由于被指向的重复目标只包含过时的答案,我更倾向于将其作为此问题的重复关闭... - Kaiido
1个回答

3
您可以做的是创建一个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);

有没有一种方法,不依赖于 iframe 或更改页面内容的方式? - Xenos
你可以创建新窗口并从此链接复制警报。 - ned

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接