0

バックスペース イベントがブラウザーによって処理されないようにしようとしてkeydownいます。jQuery ライブラリを使用しているため、元のイベントを取得する必要がありますが、一部のブラウザー (少なくとも Firefox) では、元のイベントを設定しようとするとエラーが発生します。 events keyCode = 0 の場合、そのプロパティには getter しか存在しないというエラーが表示されます。

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;
    }
}

そのため、次に何をすべきか正確にはわかりません。解決策を見つけるたびに、さらに多くの問題が生じます。この問題を回避する方法があるに違いありません。そうしないと、他のテキスト領域 (私が構築しているもののようなもの) が機能しなくなります。

4

1 に答える 1

1

イベントの発生を止めることはできません。別の方法として、ユーザーが本当にbeforeunloadページを終了するかどうかを尋ねる独自のイベントを使用する方法があります。

$(window).bind('beforeunload', function() {
    return "You want to leave the best page in the universe?";
});​
于 2010-03-13T22:38:10.227 に答える