0

ユーザーが入力できるページを作成しています。バックスペースのデフォルトの機能はページに戻ることですが、これを防ぎ、独自の機能をそれに割り当てる必要があります。

問題は実際にはバックスペースを妨げています。捕まえることはできますが、防ぐことはできません。レベル 3 のイベント リスナーを使用しています。event.preventDefault()私にとってはうまくいかず、どちらも偽を返しませんでした。

私もこれを試しました:

function onunload(e) {
    if (e.keyCode == 37) return false;
    return true;
}

<body onunload="return false;">

ただし、最初は基本的に

return confirm("false");

2番目は何もしませんか?

4

3 に答える 3

0

AFAIR、Firefoxでのみfalseを返すことでデフォルトのブラウザショートカットアクションを防ぐことができますkeypress(そして私がテストした最後のバージョンは3.xでした)。

beforeunloadおよびunloadは特定のイベントであり、文字列はハンドラーで返される必要があります。セキュリティ上の理由から、ブラウザはメッセージ(その文字列)が提供された確認ダイアログのみを表示する場合があります。さらに、バージョン4以降のFirefoxはその文字列を無視し、常に標準メッセージを表示します。

ユーザーがページを離れることを黙って防ぐ方法はありません。

ところで、バックスペースはUbuntuではhistory.back()として機能しません。

于 2012-04-10T08:04:29.733 に答える
0

レベルでkeydownハンドラーを使用します。document

document.onkeydown = function(e){
 if (e.keyCode===8) {
   return false;
 }
};
于 2012-04-25T06:20:58.147 に答える
0

バックスペース キーを完全に防止するのは得策ではないかもしれません。入力ミスをテキスト ボックスで修正したいとします。したがって、誰かがテキスト入力を入力していない場合にのみ、バックスペースを無効にする必要があります!

これは、すべての主要なブラウザーで機能する可能性があります。

document.onkeydown = function (e) {
    e = e || window.event;
    if (e.keyCode == 8) {                                           // Disable Backspace
        var el = document.activeElement;
        if (!((el.nodeName == "INPUT" && (el.type == "text" || el.type == "password")) || el.nodeName == "TEXTAREA")) {
            e.preventDefault();
            e.stopPropagation();
            return false;
        }
    }
};

DOM3 イベント モデルの仕様には下位互換性があるため、これが問題になるとは思いませんが、これは上記のコードの DOM3 修正バージョンです。

function KeyDownHandler(e) {
    if (e.keyCode == 8) {                                           // Disable Backspace
        var el = document.activeElement;
        if (!((el.nodeName == "INPUT" && (el.type == "text" || el.type == "password")) || el.nodeName == "TEXTAREA")) {
            e.preventDefault();
            e.stopPropagation();
        }
    }
};

if (document.attachEvent) document.attachEvent("onkeydown", KeyDownHandler);
else document.addEventListener("keydown", KeyDownHandler);

上記のような DOM3 イベント登録は非常に面倒な場合があります。John Resigはこれに関する適切な実装を行っていますが、JQuery のような標準のクロス ブラウザー ライブラリを使用することもできます。これはすべての主要なブラウザーで正常に動作します!

于 2012-04-25T17:03:58.620 に答える