Как я могу контролировать действие onbeforeunload в IE? - PullRequest
1 голос
/ 25 марта 2010

У меня недавно возникла проблема с onbeforeunload, когда мне нужно открыть страницу голосования, когда пользователи пытаются закрыть свои браузеры IE. Я сделал это с помощью:

<body onbeforeunload="makevote()">

А основная структура makevote() в javascript выглядит следующим образом:

function makevote()
{
    comet.distruct();
    if(csid != null && isvote == null)
    {
        window.event.returnValue = false
        window.event.returnValue='press “cancel” to vote please!'
        showComDiv(popvote,"popiframe",400,120,'your vote here','dovote()');
    }

}

В последние три месяца эта функция голосования выполнялась настолько безобразно, что я набрал только менее 8000 голосов от более чем 450000 посетителей. Я думаю, что проблема в том, что когда пользователи пытаются закрыть свои браузеры, всплывает свойство onbeforeunload вверх окно подтверждения, которое закрывало мой ящик для голосования, в то время как большинство пользователей нажимали кнопку ОК, что означает, что закрытие подтверждения выполняется, как привычка. Поэтому мой вопрос заключается в том, как я могу контролировать окно подтверждения, сделанное самим onbeforeunload? Например, если я нажму «ОК», я перейду к окну голосования вместо того, чтобы закрыть свой IE. Пока что я могу лишь определить сообщение, которое оно показывает. И есть ли другой способ сделать это лучше? был бы очень признателен!

Привет

1 Ответ

3 голосов
/ 25 марта 2010

Проще, вы не можете.

Это встроенное поведение, разработанное для обеспечения минимальных изменений в целях безопасности. То же самое в каждом браузере; FF, Chrome и т. Д. Все будут вести себя одинаково.

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

Кроме того, если ваши пользователи уходят, уже слишком поздно - они больше не хотят отвечать на опрос, все готово!

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