【问题标题】:Window popups - how to get window.blur() or window.focus() to work in FireFox 4?窗口弹出窗口 - 如何让 window.blur() 或 window.focus() 在 FireFox 4 中工作?
【发布时间】:2011-11-03 14:07:04
【问题描述】:

我知道 FF4 不允许使用 window.blur(),除非在 FF 配置中启用了“升高或降低窗口”设置。它简单地忽略了该事件。

我知道,即使关闭此设置,某些网站仍会设法打开一个弹出窗口并将焦点放在您当前的窗口上。他们是如何做到这一点的?

此外,我不明白为什么 .blur() 和 .focus() 在两个页面都驻留在同一个域中时不起作用。根据http://support.mozilla.com/en-US/questions/806756#answer-167267,这应该可行。

【问题讨论】:

  • 你能给我们举一个你看到的网站的例子吗?它可能不是传统意义上的弹出窗口——很可能是页面中看起来像弹出窗口的 div
  • 您好,只要您点击 PirateBay 的任何链接,它就会执行此操作。
  • 为什么支持这么老的浏览器?当前的 Fx 版本是 8。
  • 这是一个要求,不是每个人一出来就更新到最新版本。

标签: javascript html firefox popup


【解决方案1】:

这适用于 Firefox 和 Chrome,默认设置 (JSFiddle):

function popUnder(url, width, height) {
    var popUnderWin, nav = navigator.userAgent,
        isGecko = /rv:[2-9]/.exec(nav),
        hackString;

    hackString = nav.indexOf('Chrome') > -1 ? "scrollbar=yes" : "toolbar=0,statusbar=1,resizable=1,scrollbars=0,menubar=0,location=1,directories=0";

    popUnderWin = window.open("about:blank", "title", hackString + ",height=" + height + ",width=" + width);

    if (isGecko) {
        popUnderWin.window.open("about:blank").close();
    }

    popUnderWin.document.location.href = url;

    setTimeout(window.focus);
    window.focus();
    popUnderWin.blur();
}

document.getElementById("asd").addEventListener("click", function() {
    popUnder("http://www.google.com", 1024, 768);
}, false);
<div id="asd">click here</div>

如果没有 window.open 的 hacky 额外参数,我无法让它工作,所以他们有一些东西。

【讨论】:

    【解决方案2】:

    http://support.mozilla.com/en-US/questions/806756#answer-167267

    他们说这是不可能的,除非每个人都去about:config 并将dom.disable_window_flip 设置为false

    我不知道有任何代码绕过此限制,但我认为其他网站使用的不是window.blur()window.focus()

    还有一篇类似的文章here

    【讨论】:

    • 您好,感谢您的回复。正如我在问题中所说,我知道限制,但同时我知道可以实现这一点的许多站点。他们的 javascript 是加密的,我无法查看他们是如何做到的。
    • @PointedEars 他在海盗湾的问题中说。我无法访问它,因为我的 ISP 已阻止它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多