2012-12-06 30 views
5

क्या मेरे खोज बॉक्स पर ध्यान केंद्रित करने के लिए ब्राउज़र खोजक पर फ़ोकस बदलकर सफारी ब्राउज़र में CTRL + F के व्यवहार को ओवरराइड करने का कोई तरीका है? निम्नलिखित जीडब्ल्यूटी स्निपेट कोड:सफारी में ctrl-f को ओवरराइड करने के लिए कैसे करें

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

मुझे फ़ायरफ़ॉक्स और क्रोम ब्राउज़र में पुनर्निर्देशन करने की अनुमति देता है। हालांकि, सफारी में ब्राउज़र खोजक फोकस प्राप्त करता है। इस बारे में कोई भी जीडब्ल्यूटी या जावास्क्रिप्ट टिप?

उत्तर

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

प्रदर्शन पाया जा सकता है here और there। सफारी में दोनों का परीक्षण किया और वे काम करते हैं।

मैं नहीं जानता कि के रूप में 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; 
     } 
    } 
} 
0

आप जावास्क्रिप्ट के साथ इसे हल करना चाहते हैं सही है, लेकिन यहाँ:

जोड़ें एक घटना श्रोता

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

आप बाद में उसे निकालना चाहते हैं:

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

इवेंट-फ़ंक्शन:

function onDocumentKeyDown(evt) { 

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


}