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

我认为这篇文非常相关:脚本小子如何劫持您的浏览器以窃取您的密码。相关代码部分:

 $(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.html,http : //labs.neohapsis.com/2012/11/14/browser-event-hijacking /

可以在这里那里找到演示。在 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;
        }
    }
}
于 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 回答