दिलचस्प पोस्ट
आईआईएस 7.5+ पुट और रेस्टफ़ुल सेवा के लिए हटाएं, विस्तारहीन ओवरलोडिंग नया / हटाएं क्या आप अजगर उपप्रक्रिया आउटपुट स्ट्रोडआउट और स्टेडरर सामान्य रूप से बना सकते हैं, लेकिन यह भी स्ट्रिंग के रूप में आउटपुट को कैप्चर करते हैं? आप बैच फ़ाइलों में एक नई लाइन कैसे गूंज सकते हैं? क्या मैं JRadioButton को JTable में जोड़ सकता हूँ? मित्तिक परियोजना को गिट में कनवर्ट करें ArrayBuffer को आधार64 एन्कोडेड स्ट्रिंग हम जावास्क्रिप्ट में पहचानकर्ता के रूप में तत्व आईडी का उपयोग क्यों नहीं करते हैं? पृष्ठ के शीर्ष तक कूदने से '#' लिंक पर क्लिक करने से कैसे रोकें? मैं एक पाठ फ़ाइल में एक निर्दिष्ट पंक्ति कैसे पढ़ूं? कैसे पृष्ठभूमि के रूप में एक png साजिश के लिए? "कोई नहीं है" और "== कोई नहीं" के बीच अंतर क्या है मैं टर्मिनल से MySQL के साथ डेटाबेस कैसे आयात कर सकता हूं? क्या एएसपी.नेट वेब फॉर्म एक डबल क्लिक सबमिशन को रोकता है? UITextview के लिए लाइनों की संख्या सीमित करें

जावास्क्रिप्ट में एक कुंजीपटल घटना को फ़ायरिंग

मैं जावास्क्रिप्ट का उपयोग कर सफारी में एक कुंजीपटल घटना को अनुकरण करने की कोशिश कर रहा हूं।

मैंने यह कोशिश की है:

var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0); 

… और यह भी:

 var event = document.createEvent("UIEvents"); event.initUIEvent("keypress", true, true, window, 1); event.keyCode = 115; 

हालांकि, दोनों तरीकों की कोशिश करने के बाद, मेरे पास एक ही समस्या है: कोड निष्पादित होने के बाद, keyCode / ईवेंट ऑब्जेक्ट के गुण which 0 सेट हैं, 115 नहीं हैं

क्या किसी को पता है कि कैसे मज़बूती से बनाने और सफारी में एक कुंजीपटल घटना प्रेषित करने के लिए? (यदि मैं संभव हो तो सादे जावास्क्रिप्ट में इसे हासिल करना चाहता हूं।)

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में एक कुंजीपटल घटना को फ़ायरिंग"

क्या आपने इस घटना को ठीक से प्रेषित किया?

 function simulateKeyEvent(character) { var evt = document.createEvent("KeyboardEvent"); (evt.initKeyEvent || evt.initKeyboardEvent)("keypress", true, true, window, 0, 0, 0, 0, 0, character.charCodeAt(0)) var canceled = !body.dispatchEvent(evt); if(canceled) { // A handler called preventDefault alert("canceled"); } else { // None of the handlers called preventDefault alert("not canceled"); } } 

यदि आप jQuery का उपयोग करते हैं, तो आप ऐसा कर सकते हैं:

 function simulateKeyPress(character) { jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) }); } 

मैं डोम कीबोर्ड ईवेंट स्तर 3 पॉलीफिल पर काम कर रहा हूं नवीनतम ब्राउज़रों में या इस polyfill के साथ आप ऐसा कुछ कर सकते हैं:

 element.addEventListener("keydown", function(e){ console.log(e.key, e.char, e.keyCode) }) var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}); element.dispatchEvent(e); //If you need legacy property "keyCode" // Note: In some browsers you can't overwrite "keyCode" property. (At least in Safari) delete e.keyCode; Object.defineProperty(e, "keyCode", {"value" : 666}) 

अद्यतन करें:

अब मेरा पॉलीफ़िल विरासत गुणों को "कुंजीकोड", "चारकोडा" और "जो"

 var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 }); 

यहाँ उदाहरण

इसके अतिरिक्त यहां मेरे पॉलीफ़िल से अलग क्रॉस-ब्राउज़र इनिट किबोर्डबोर्ड है: (सार)

पॉलीफिल डेमो

यह वेबकिट में एक बग के कारण है

आप createEvent('Event') का उपयोग करके createEvent('Event') बजाय वेबकिट बग के आसपास काम कर सकते हैं, और तब keyCode संपत्ति निर्दिष्ट कर सकते हैं। यह जवाब और इस उदाहरण देखें।

मोज़िला डेवलपर नेटवर्क निम्नलिखित स्पष्टीकरण प्रदान करता है:

  1. event = document.createEvent("KeyboardEvent") का उपयोग करके एक ईवेंट बनाएं
  2. कीइवेट में इनटेट

का उपयोग करते हुए:

 event.initKeyEvent (type, bubbles, cancelable, viewArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, keyCodeArg, charCodeArg) 
  1. अपने yourElement.dispatchEvent(event) का उपयोग करके ईवेंट yourElement.dispatchEvent(event)

मुझे आपके कोड में आखिरी एक नहीं दिखाई दे रहा है, शायद यही वह बात है जो आप याद कर रहे हैं। मुझे आशा है कि यह IE में भी काम करता है …

मैं इस के साथ बहुत अच्छा नहीं हूँ, लेकिन KeyboardEvent => देखें कि KeyboardEvent initKeyEvent साथ आरंभ किया initKeyEvent
यहां <input type="text" /> तत्व पर उत्सर्जन का एक उदाहरण है

 document.getElementById("txbox").addEventListener("keypress", function(e) { alert("Event " + e.type + " emitted!\nKey / Char Code: " + e.keyCode + " / " + e.charCode); }, false); document.getElementById("btn").addEventListener("click", function(e) { var doc = document.getElementById("txbox"); var kEvent = document.createEvent("KeyboardEvent"); kEvent.initKeyEvent("keypress", true, true, null, false, false, false, false, 74, 74); doc.dispatchEvent(kEvent); }, false); 
 <input id="txbox" type="text" value="" /> <input id="btn" type="button" value="CLICK TO EMIT KEYPRESS ON TEXTBOX" />