2012-12-06 42 views
5

Kendi tarayıcım üzerinde odaklanmak için tarayıcı bulucudaki odağı değiştirerek, Safari tarayıcısındaki CTRL + F davranışını geçersiz kılmanın bir yolu var mı? Aşağıdaki GWT pasajı kodu:Safari'de ctrl-f nasıl geçersiz kılınır?

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

bana Firefox ve Chrome tarayıcılarında yönlendirmesi yapmasına olanak verir. Ancak, Safari'de tarayıcı bulucu odağı alır. Bu konuda herhangi bir GWT veya Javascript ipucu?

cevap

3

Bu blogpost'un çok ilgili olduğunu düşünüyorum: How script kiddies can hijack your browser to steal your password. İlgili kod kısmı:

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

Diğer kaynaklar: http://h43z.blogspot.de/2012/11/whats-real-and-whats-not.html, http://labs.neohapsis.com/2012/11/14/browser-event-hijacking/

Demos bulunabilir here ve there. Her ikisi de Safari'de test edildi ve çalışıyorlar.

Ekleme: bu javascript ile çözmek istiyorum EĞER benim 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; 
     } 
    } 
} 
0

deneyin burada doğru, ancak eğer GWT hakkında çok emin değilim bilmiyorum gibi

bir olay dinleyicisi

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

daha sonra kaldırmak istiyorsanız:

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

Olay İşlev:

function onDocumentKeyDown(evt) { 

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


} 
İlgili konular