0

こんにちは、WebアプリケーションのEscキーの問題に直面しています。ユーザーがエスケープキーを押すと、Webアプリケーションの読み込みが停止します。これらすべてを(onkeydownとonkeyup)で使ってみました

document.attachEvent("onkeydown", win_onkeydown_handler);
window.attachEvent("onkeydown", win_onkeydown_handler);
window.document.attachEvent("onkeydown", win_onkeydown_handler);

Webアプリケーションでescape(KeyCode = 27)を検出できませんが、refresh、f5、およびその他すべてのキーを検出できます。

注:IEでこの問題に直面しています

4

3 に答える 3

1

これは、iframeでのエスケープを防ぐのに役立ちます

function disableEscapeAndRefresh(){
try{
    if(window.frames && window.frames[0]){
        window.frames[0].focus();
        for (var i_tem = 0; i_tem < window.frames.length; i_tem++){
            if(document.all && document.body.filters)
                window.frames[i_tem].document.onkeydown = new Function("var e=window.frames["+i_tem+"].event; if(e.keyCode==116){e.keyCode=0;alert('Refresh Not Allowed');return false;}if(e.keyCode==27){e.keyCode=0;alert('Escape Not Allowed');return false;};");
        }
    }
}catch(e){

}
}

iframeonloadでこのメソッドを呼び出す

于 2012-10-08T15:57:16.860 に答える
0

それをトラップする方法はないと思います...Xをクリックしてページの読み込みを停止するのと同じです。

于 2012-10-05T16:12:33.850 に答える
0

有効になっているバージョンのIEをターゲットにしている場合attachEvent、これを使用して、押されているエスケープキーを検出できます。イベントの処理は、デフォルトのイベント動作を防ぐための通常のコードですが、これはセキュリティ上の欠陥と見なされる可能性があるため、ページのダウンロードをキャンセルしても機能しない場合があります(ユーザーが悪意のあるダウンロードをキャンセルするのを防ぎたい悪意のある開発者を想像してください) )::

document.attachEvent('onkeydown', function(){
  if(window.event.keyCode == 27) {
    window.event.returnValue = false; 
    window.event.cancelBubble = true;
  }
});

http://jsfiddle.net/steveukx/LJHs8/

于 2012-10-05T16:43:49.950 に答える