Всплывающие окна - как заставить window.blur () или window.focus () работать в FireFox 4? - PullRequest
1 голос
/ 03 ноября 2011

Мне известно, что FF4 не позволяет использовать window.blur(), если в конфигурации FF не включена настройка «Поднять или опустить окно». Он просто игнорирует событие.

Мне известно, что на некоторых сайтах все еще удается открыть всплывающее окно и сохранять фокус на текущем окне, даже если этот параметр отключен. Как они этого добиваются?

Кроме того, я не понимаю, почему .blur () и .focus () не работают, когда обе страницы находятся в одном домене. Согласно http://support.mozilla.com/en-US/questions/806756#answer-167267 это должно работать.

Ответы [ 2 ]

6 голосов
/ 13 ноября 2011

Это работает для меня в 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, так что в них что-то есть.

3 голосов
/ 08 ноября 2011

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

Они говорят, что это невозможно, пока все не перейдут на about:config и не установят dom.disable_window_flip на false.

Я не знаю ни одного кодаэто обходит это ограничение, но я думаю, что другие сайты используют что-то отличное от window.blur() и window.focus()

Есть похожая статья здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...