2012-12-06 9 views
5

Czy istnieje sposób, aby zastąpić zachowanie CTRL + F w przeglądarce Safari, zmieniając fokus na przeglądarce wyszukiwarki, aby skupić się na moim własnym polu tekstowym? Poniższy fragment kodu GWT:Jak zastąpić ctrl-f w 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; 
     } 
    } 
} 

pozwala mi zrobić przekierowanie w przeglądarkach Firefox i Chrome. Jednak w Safari wyszukiwarka znajduje się w centrum uwagi. Jakieś wskazówki na temat GWT lub Javascript na ten temat?

Odpowiedz

3

Myślę, że to blogpost jest bardzo podobne: How script kiddies can hijack your browser to steal your password. Odpowiedni fragment kodu:

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

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

Dema można znaleźć here i there. Przetestował je oba w Safari i działają.

Ponieważ nie wiem zbyt wiele o GWT nie jestem pewien, czy to jest poprawne, ale tutaj jest moja GWT spróbować

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

jeśli chcesz go rozwiązać z javascript:

Dodaj detektor zdarzeń

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

jeśli chcesz go usunąć później:

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

Funkcja zdarzenia:

function onDocumentKeyDown(evt) { 

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


}