【问题标题】:Invoking original unmolested window.open from bookmarklet调用原始不受干扰的窗口。从书签打开
【发布时间】:2011-03-24 01:15:24
【问题描述】:

我有一个通用的小书签,它的开头是:

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

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

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

...有效替换window.open 并破坏书签操作。由于书签的性质,我无法采取任何措施来防止这种不当行为。

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

【问题讨论】:

    标签: javascript dom opera bookmarklet


    【解决方案1】:
    window.constructor.prototype.open
    

    不,对不起。不过你可以做一些骇客来获得一个新的:)

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

    【讨论】:

    • 酷,谢谢。开箱即用的想法很棒,我正在研究原型,而可以轻松获得新副本:-)
    • 没想到! window.constructor.prototype.open
    • 仅供参考:Firefox 允许 delete window.open 显示本地方法。
    • 呵呵,也不错。当然,如果你这样做,你会破坏你所在的页面。
    • 等等,等等,Opera里面是未定义的,之前试过,他们的window实现好像很特别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多