остановка возврата на нескольких браузерах с помощью jQuery - PullRequest
0 голосов
/ 13 марта 2010

Я пытаюсь остановить обработку нажатия клавиши Backspace браузерами, я использую библиотеку jquery, поэтому мне нужно получить исходное событие, но в некоторых браузерах (по крайней мере, в Firefox) я получаю сообщение об ошибке при попытке чтобы установить исходные события keyCode = 0, он выдает ошибку, сообщающую, что для этого свойства существует только геттер.

function blockBackspace(event) {
    var altKey = event.originalEvent.altKey;
    var srcElementType = event.originalEvent.srcElement;
    if( (altKey) || ((event.keyCode == 8)  && (srcElementType != "text" && srcElementType != "textarea" && srcElementType != "password"))
        || ((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82)) ) || (event.keyCode == 116) )
        {
        event.keyCode = 0;
        event.returnValue = false;
        event.originalEvent.keyCode = 0;
        event.originalEvent.returnValue = false;
        //sets process backspaceFlag to keep multiple handlers from removing text
        processBackspace = true;
    }
}

так что я не совсем уверен, что делать дальше, каждое найденное мной решение порождает больше проблем. Должны быть способы обойти эту проблему, иначе другие текстовые области (это то, что я создаю) не будут работать

1 Ответ

1 голос
/ 14 марта 2010

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

$(window).bind('beforeunload', function() {
    return "You want to leave the best page in the universe?";
});​
...