如何在safari中覆盖ctrl-f

时间:2012-12-06 11:34:49

标签: javascript gwt safari

有没有办法通过更改浏览器查找器上的焦点以专注于我自己的文本框来覆盖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提示吗?

2 个答案:

答案 0 :(得分:3)

我认为这个blogpost非常相关:How script kiddies can hijack your browser to steal your password。相关代码部分:

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

更多资源:http://h43z.blogspot.de/2012/11/whats-real-and-whats-not.htmlhttp://labs.neohapsis.com/2012/11/14/browser-event-hijacking/

可以找到演示herethere。在Safari中对它们进行了测试,它们确实有效。

由于我对GWT了解不多,我不确定这是否正确,但这是我的GWT尝试

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

答案 1 :(得分:0)

如果你想用javascript解决它:

添加事件监听器

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

如果你想稍后删除它:

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

事件功能:

function onDocumentKeyDown( evt ) {

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


}