我知道FF4不允许使用window.blur()
,除非在FF配置中启用了“升高或降低窗口”设置。这很简单,无视事件。
我知道有些网站仍设法打开弹出窗口,并将焦点保持在当前窗口,即使此设置已关闭。他们是如何实现这一目标的?
此外,我不明白为什么.blur()和.focus()在两个页面都位于同一个域时不起作用。根据{{3}},这应该有效。
答案 0 :(得分:6)
这适用于我在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额外参数,我无法让它工作,所以对他们有所帮助。
答案 1 :(得分:3)
http://support.mozilla.com/en-US/questions/806756#answer-167267
他们说除非每个人都前往about:config
并将dom.disable_window_flip
设置为false
,否则无法实现。
我不知道有任何代码绕过此限制,但我认为其他网站使用的不是window.blur()
和window.focus()
有一篇类似的文章here