从bookmarklet调用原始的unmolested window.open

时间:2011-03-24 01:15:24

标签: javascript dom opera bookmarklet

我有通用书签,以:

开头
javascript:with (window.open("")) {/* lots of irrelevant characters */

它可以正常工作(打开新窗口并编写有关页面元素的报告,特别是),但在某些页面上失败,当作者决定open是什么功能的好名字时:

/* somewhere in global scope */
function open() { /* something */ }

...有效替换window.open并打破bookmarklet操作。由于书签的性质,我不能做任何事情来防止这种不良行为。

在这种情况下,有没有办法调用原始本地window.open来恢复? 请注意,我的主要浏览器是Opera,我真的想让它在那里工作。

1 个答案:

答案 0 :(得分:1)

window.constructor.prototype.open

不,抱歉。你可以做一些hackery来获得一个新的:)

var ifr = document.createElement('iframe');    
document.body.appendChild(IFR);    
ifr.contentWindow.open(...)