2012-02-29 8 views
5

आईई 8 में इसे चलाने की कोशिश कर रहा है, लेकिन यह काम नहीं करता है, कोई विचार नहीं है? यह फ़ायरफ़ॉक्स, क्रोम, ओपेरा में काम करता है ...क्यों आईई

preventBackspace(); 

function preventBackspace() { 
    try { 
     if (window.addEventListener) { 
      window.addEventListener("keydown", onKeyDown, true); 
     } else if (window.attachEvent) { // IE 
      alert(window); 
      window.attachEvent("onkeydown", onKeyDown); 
     } else { 
      document.addEventListener("keydown", onKeyDown, true); 
     } 
     } catch (e) { 
      alert(e); 
    } 
} 

function onKeyDown(e) { 
    alert("test!"); 
} 

jsfiddle:

http://jsfiddle.net/ubfBq/

window.attachEvent परिभाषित किया गया है और घटना श्रोता गयी। लेकिन यह कभी भी "परीक्षण" नहीं दिखाता है! चेतावनी।

मैंने उपयोग के बारे में कुछ पढ़ा है कैप्चर फ्लैग, जो अन्य तरीकों से उपयोग करना संभव है। यह घटना "नीचे जाने" से पहले खिड़की पर कुंजी प्रेस को कैप्चर करता है। इंटरनेट एक्सप्लोरर ऐसा करने/उपयोग करने की प्रतीत नहीं होता है। क्या यह समस्या है? यदि हां, तो मैं इसे कैसे हल कर सकता हूं?

+0

बेहतर होगा कि तुम jQuery बजाय पहिया पुनर्रचना की उपयोग कर सकते हैं । यह IE – Codebeat

+0

नामक भयानक ब्राउज़र के साथ कई अलग-अलग चीजों को हल करता है हां यह बात यह है कि यह एक फ्लेक्स प्रोजेक्ट के अंदर एक बहुत ही छोटा जावास्क्रिप्ट अनुभाग है और मैं केवल कुछ तरीकों के लिए JQuery लोड नहीं करना चाहता हूं। – Ixx

+0

ठीक है, लेकिन मुझे लगता है कि यह एक झूठी बहस है और जब समाधान पहले से ही है तो आप स्वयं को समस्या बनाते हैं। – Codebeat

उत्तर

4

इसके बजाय document.attachEvent का उपयोग करें। :]

+0

एचएमपीएफ ... हाँ यह काम करता है – Ixx

9

ऐसा लगता है कि केवल IE9 और बाद में समर्थन window पर बाध्यकारी keydown: http://www.quirksmode.org/dom/events/keys.html#t00

इसके बजाय, यह बाँध IE के लिए document रहे हैं:

function preventBackspace() { 
    try { 
     if (window.addEventListener) { 
      window.addEventListener("keydown", onKeyDown, true); 
     } else if (document.attachEvent) { // IE 
      alert(document); 
      document.attachEvent("onkeydown", onKeyDown); 
     } else { 
      document.addEventListener("keydown", onKeyDown, true); 
     } 
    } catch (e) { 
     alert(e); 
    } 
} 
+0

धन्यवाद, यह भी सही और अधिक व्यापक है लेकिन दूसरा व्यक्ति सही था और पहले :) – Ixx