5

ブラウザー ファインダーのフォーカスを自分のテキスト ボックスにフォーカスするように変更することで、Safari ブラウザーの CTRL+F の動作をオーバーライドする方法はありますか? 次の GWT スニペット コード:

Event.addNativePreviewHandler(new NativePreviewHandler() {

    public void onPreviewNativeEvent(NativePreviewEvent event) {
        switch (event.getTypeInt()) {
            case Event.ONKEYDOWN:
                NativeEvent nEvent = event.getNativeEvent();
                if (nEvent.getCtrlKey() && nEvent.getKeyCode() == 'F') {
             focusOnMyTextBox();    
                     nEvent.preventDefault();
                }
                break;
        }
    }
}

Firefox および Chrome ブラウザーでリダイレクトを実行できます。ただし、Safari では、ブラウザーのファインダーがフォーカスされます。これに関するGWTまたはJavascriptのヒントはありますか?

4

2 に答える 2

3

I think this blogpost is very related: How script kiddies can hijack your browser to steal your password. Relevant code part:

 $(window).keydown(function(evt){  
       if((evt.which == "70" && ( evt.metaKey || evt.ctrlKey ))){  
            evt.preventDefault(); 
            /* display fake search */
       }  
  }); 

Further resources: http://h43z.blogspot.de/2012/11/whats-real-and-whats-not.html, http://labs.neohapsis.com/2012/11/14/browser-event-hijacking/

Demos can be found here and there. Tested both of them in Safari and they do work.

As I don't know much about GWT I'm not sure if this is correct, but here is my GWT try

Event.addNativePreviewHandler(new NativePreviewHandler() {

    public void onPreviewNativeEvent(NativePreviewEvent event) {
        switch (event.getTypeInt()) {
            case Event.ONKEYDOWN:
                NativeEvent nEvent = event.getNativeEvent();
                if((nEvent.which == "70" && ( nEvent.metaKey || nEvent.ctrlKey ))){  
                    nEvent.preventDefault(); 
                    focusOnMyTextBox();   
                }  
                break;
        }
    }
}
于 2012-12-06T11:47:48.250 に答える
0

JavaScriptで解決したい場合:

イベント リスナーを追加する

document.addEventListener( 'keydown', onDocumentKeyDown, false );

後で削除する場合:

document.removeEventListener( 'keydown', onDocumentKeyDown, false );

イベント機能:

function onDocumentKeyDown( evt ) {

    if(evt.keyCode == "70" &&  evt.ctrlKey ) {
                ...
    }


}
于 2012-12-06T12:32:47.710 に答える