Проблема с обработкой события onbeforeunload в firefox

Следующий фрагмент кода предупреждает о положении мыши в IE, но в Firefox и других браузерах он предупреждает о «неопределенном».

<body onbeforeunload="test(event);">

function test(e){
     if (!e) var e = window.event;
     alert(e.clientX);
}

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

Мое требование — открывать новое окно только при закрытом браузере и НЕ при обновлении страницы. Есть ли другой способ обнаружить закрытие браузера во всех браузерах?


person Eifel    schedule 30.08.2010    source источник
comment
stackoverflow.com/questions/7389554/crossbrowser-onbeforeunload/   -  person Aelios    schedule 13.05.2014


Ответы (1)


просто добавьте обработчик mousemove, который будет хранить положение мыши в переменной, например:

<body onbeforeunload="test(event);" onmousemove="storeMouse(event);">

var mouse;
function storeMouse(e)
{
    if(!e) e = window.event;
    mouse = {clientX: e.clientX, clientX:e.clientY};
}


function test(e){
     alert(mouse.clientX);
}
person Alex Reitbort    schedule 30.08.2010
comment
Спасибо, Алекс, приведенный выше код возвращает координаты мыши. Но я не могу обобщить правило для этого. Один раз, когда я закрываю браузер, clientX и clientY выдает предупреждения (0,345). В следующий раз он выдает предупреждения (372,45). на кнопку закрытия (X) браузера требуется, чтобы обобщить что-то вроде приведенного ниже кода для работы в FF: if((window.event.clientX ‹0 || window.event.clientY ‹0) {window.open(. ..)} Поскольку каждый раз, когда указатель мыши указывает на кнопку закрытия, я получаю совершенно разные диапазоны координат, я не могу написать условие, подобное приведенному выше. Пожалуйста, не могли бы вы пролить свет на это? - person Eifel; 30.08.2010