2012-12-06 12 views
5

Esiste un modo per sovrascrivere il comportamento di CTRL + F nel browser Safari modificando lo stato attivo del mirino del browser per concentrarsi sulla mia casella di testo? Il seguente codice snippet GWT:Come ignorare ctrl-f in safari

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

mi consente di effettuare il reindirizzamento nei browser Firefox e Chrome. Tuttavia, in Safari il mirino del browser ottiene l'attenzione. Qualche consiglio su GWT o Javascript su questo?

risposta

3

Penso che questo blogpost sia molto correlato: How script kiddies can hijack your browser to steal your password. parte rilevante Codice:

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

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

demo può essere trovato here e there. Testati entrambi in Safari e funzionano.

Come io non so molto di GWT non sono sicuro se questo è corretto, ma qui è la mia GWT provare

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

SE volete risolverlo con javascript:

Add un listener di eventi

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

se si desidera rimuovere in un secondo momento:

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

The Event-Function:

function onDocumentKeyDown(evt) { 

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


}