উত্তর:
একটি অ-জিকুরি সংস্করণ যা ওয়েবকিট এবং গেকো উভয় ক্ষেত্রেই কাজ করে:
var keyboardEvent = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent[initMethod](
"keydown", // event type: keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // view: should be window
false, // ctrlKey
false, // altKey
false, // shiftKey
false, // metaKey
40, // keyCode: unsigned long - the virtual key code, else 0
0 // charCode: unsigned long - the Unicode character associated with the depressed key, else 0
);
document.dispatchEvent(keyboardEvent);
keyCode
সর্বদা 0 হয় এবং আমি এটি পরিবর্তন করতে পারি না।
event.which
সর্বদা তা 0
হওয়ার কারণ হয়ে থাকে document.createEvent("KeyboardEvent")
। @ ওয়েলফ্ট আমার পক্ষে কাজ করা বিশদগুলি এবং একটি কর্মপরিকল্পনা ভাগ করেছে, অন্য মন্তব্যে এই মন্তব্যে । মূলত, আপনার document.createEvent('Event')
জেনেরিক ইভেন্ট তৈরি করতে এবং তারপরে টাইপটি সেট করে কী এর চারকোডের সমান সম্পত্তি keydown
দিতে হবে keyCode
।
আপনি jQuery 1.3.1 ব্যবহার করতে ঠিক থাকলে:
function simulateKeyPress(character) {
jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) });
}
$(function() {
$('body').keypress(function(e) {
alert(e.which);
});
simulateKeyPress("e");
});
trigger
নেটিভ ব্রাউজার ইভেন্টগুলি নকল করতে ব্যবহার করা যাবে না ।
কি আপনি কি করতে পারেন প্রোগ্রামেটিক্যালি আরম্ভ হয় keyevent শ্রোতাকে গুলিতে keyevents । এটি স্যান্ডবক্সযুক্ত সুরক্ষা-দৃষ্টিকোণ থেকে অনুমতি দেওয়া অর্থবোধ করে। এই ক্ষমতাটি ব্যবহার করে, আপনি তারপরে একটি সাধারণ পর্যবেক্ষক-প্যাটার্ন প্রয়োগ করতে পারেন । আপনি এই পদ্ধতিটিকে "সিমুলেটিং" বলতে পারেন।
নীচে jQuery এর সাথে ডাব্লু 3 সি ডোম স্ট্যান্ডার্ডে এটি কীভাবে সম্পাদন করা যায় তার একটি উদাহরণ রয়েছে:
function triggerClick() {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var cb = document.querySelector('input[type=submit][name=btnK]');
var canceled = !cb.dispatchEvent(event);
if (canceled) {
// preventDefault was called and the event cancelled
} else {
// insert your event-logic here...
}
}
এই উদাহরণটি এটিকে রূপান্তরিত হয়েছে: https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
JQuery এ:
jQuery('input[type=submit][name=btnK]')
.trigger({
type: 'keypress',
which: character.charCodeAt(0 /*the key to trigger*/)
});
তবে সাম্প্রতিককালে, ব্রাউজার-স্যান্ডবক্স রেখে প্রকৃতপক্ষে কী-ইনভেন্টগুলি ট্রিগার করার কোনও [DOM] উপায় নেই। এবং সমস্ত বড় ব্রাউজার বিক্রেতারা সেই সুরক্ষা ধারণাটি মেনে চলবে।
অ্যাডোব ফ্ল্যাশের মতো প্লাগইনগুলির জন্য - যা এনপিএপিআই- এর ভিত্তিতে রয়েছে এবং স্যান্ডবক্সকে বাইপাস করার অনুমতি দেয়: এগুলি ফ্যাসিং -আউট ; ফায়ারফক্স ।
বিস্তারিত ব্যাখ্যা:
আপনি পারবেন না এবং আপনার অবশ্যই সুরক্ষার কারণে নয় (যেমন পেক্কা ইতিমধ্যে উল্লেখ করেছেন)। আপনি সর্বদা এর মধ্যে একটি ব্যবহারকারী ইন্টারঅ্যাকশন প্রয়োজন হবে। অতিরিক্তভাবে ব্রাউজার বিক্রেতাদের ব্যবহারকারীদের দ্বারা মামলা করার সম্ভাবনাটি কল্পনা করুন, কারণ বিভিন্ন প্রোগ্রামেটিক কীবোর্ড ইভেন্টগুলি স্পোফিং আক্রমণের দিকে পরিচালিত করবে।
বিকল্প এবং আরও বিশদ জন্য এই পোস্টটি দেখুন । সবসময় ফ্ল্যাশ ভিত্তিক অনুলিপি এবং পেস্ট থাকে। এখানে একটি মার্জিত উদাহরণ । একই সাথে এটি একটি সাক্ষ্য যা কেন ওয়েব প্লাগইন বিক্রেতাদের থেকে দূরে চলেছে।
প্রোগ্রামযুক্তভাবে দূরবর্তী সামগ্রী অ্যাক্সেস করতে সিওআরএস অপ্ট-ইন করার ক্ষেত্রে একই ধরণের সুরক্ষা মানসিকতা প্রয়োগ করা হয় ।
উত্তরটি হ'ল:
স্বাভাবিক পরিস্থিতিতে স্যান্ডবক্সযুক্ত ব্রাউজার পরিবেশে প্রোগ্রামগতভাবে ইনপুট কীগুলি ট্রিগার করার কোনও উপায় নেই ।
বটমলাইন: আমি বলছি না যে ভবিষ্যতে এটি বিশেষায়িত ব্রাউজারের মোড এবং / অথবা গেমিংয়ের শেষ লক্ষ্য বা একই জাতীয় ব্যবহারকারীর অভিজ্ঞতার দিকে বিশেষাধিকারের অধীনে সম্ভব হবে না। তবে এই ধরণের মোডে প্রবেশের আগে, ব্যবহারকারীকে ফুলস্ক্রিন এপিআই মডেলের অনুরূপ অনুমতি এবং ঝুঁকিগুলির জন্য জিজ্ঞাসা করা হবে ।
দরকারী: কী কোডসের প্রসঙ্গে, এই সরঞ্জামটি এবং কীকোড ম্যাপিং কার্যকর হবে।
আপনি এই জাতীয় উপাদানের মতো কীবোর্ড ইভেন্টগুলি প্রেরণ করতে পারেন
element.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));
আপনি ব্যবহার করতে পারেন dispatchEvent()
:
function simulateKeyPress() {
var evt = document.createEvent("KeyboardEvent");
evt.initKeyboardEvent("keypress", true, true, window,
0, 0, 0, 0,
0, "e".charCodeAt(0))
var body = document.body;
var canceled = !body.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
আমি এটি পরীক্ষা করিনি, তবে এটি ডিসপ্যাচএভেন্ট () এর ডকুমেন্টেশনের কোড থেকে অভিযোজিত । আপনি সম্ভবত এটির মাধ্যমে পড়তে চাইবেন এবং ক্রিয়েভেন্ট () এবং initKeyEvent () এর জন্যও ডক্স।
initKeyEvent
বা initKeyboardEvent()
। উভয়ই কীবোর্ড ইভেন্ট () নির্মাণকারী ব্যবহারের পক্ষে স্বীকৃত dep
আপনি কীবোর্ড ইভেন্টগুলি তৈরি এবং প্রেরণ করতে পারেন এবং এগুলি যথাযথ নিবন্ধিত ইভেন্ট হ্যান্ডলারগুলিকে ট্রিগার করবে তবে উদাহরণস্বরূপ ইনপুট উপাদানটিতে প্রেরণ করা থাকলে তারা কোনও পাঠ্য উত্পাদন করবে না ।
পাঠ্য ইনপুট সম্পূর্ণরূপে অনুকরণ করতে আপনার কীবোর্ড ইভেন্টগুলির ক্রম উত্পাদন করতে হবে এবং স্পষ্টভাবে ইনপুট উপাদানটির পাঠ্য সেট করতে হবে set ইভেন্টগুলির ক্রম আপনি কতটা পুঙ্খানুপুঙ্খভাবে পাঠ্য ইনপুট অনুকরণ করতে চান তার উপর নির্ভর করে।
সবচেয়ে সহজ ফর্মটি হ'ল:
$('input').val('123');
$('input').change();
কিছু ক্ষেত্রে keypress
ইভেন্টে প্রয়োজনীয় ফান্টিশালিটি সরবরাহ করতে পারে না। মজিলা ডক্স থেকে আমরা দেখতে পাচ্ছি যে বৈশিষ্ট্যটি হ্রাস করা হয়েছে:
এই বৈশিষ্ট্যটি আর সুপারিশ করা হয় না। যদিও কিছু ব্রাউজার এখনও এটি সমর্থন করতে পারে তবে এটি ইতিমধ্যে প্রাসঙ্গিক ওয়েব স্ট্যান্ডার্ড থেকে সরিয়ে ফেলা হতে পারে, ফেলে দেওয়া প্রক্রিয়াধীন হতে পারে, বা কেবলমাত্র সামঞ্জস্যের উদ্দেশ্যে রাখা যেতে পারে। এটি ব্যবহার করা এড়িয়ে চলুন এবং সম্ভব হলে বিদ্যমান কোড আপডেট করুন; আপনার সিদ্ধান্তটি গাইড করতে এই পৃষ্ঠার নীচে সামঞ্জস্যতা সারণীটি দেখুন। সচেতন হন যে এই বৈশিষ্ট্যটি যে কোনও সময় কাজ করা বন্ধ করতে পারে।
সুতরাং, যেহেতু keypress
ইভেন্টটি দুটি ফলস্বরূপ বরখাস্ত হওয়া ইভেন্টগুলির মধ্যে একত্রিত হয়েছে keydown
এবং keyup
একই কী এর জন্য নিম্নলিখিতটি ঘটেছে , কেবল ইভেন্টগুলি একে একে তৈরি করুন:
element.dispatchEvent(new KeyboardEvent('keydown',{'key':'Shift'}));
element.dispatchEvent(new KeyboardEvent('keyup',{'key':'Shift'}));
অ্যালেক্স 2 কে 8 থেকে উত্তরের ভিত্তিতে, এখানে একটি সংশোধিত সংস্করণ দেওয়া হয়েছে যা সমস্ত ব্রাউজারগুলিতে কাজ করে যা jQuery সমর্থন করে (সমস্যাটি jQuery.event.trigger- তে অনুপস্থিত আর্গুমেন্টে ছিল যা অভ্যন্তরীণ ফাংশনটি ব্যবহার করার সময় ভুলে যাওয়া সহজ)।
// jQuery plugin. Called on a jQuery object, not directly.
jQuery.fn.simulateKeyPress = function (character) {
// Internally calls jQuery.event.trigger with arguments (Event, data, elem).
// That last argument, 'elem', is very important!
jQuery(this).trigger({ type: 'keypress', which: character.charCodeAt(0) });
};
jQuery(function ($) {
// Bind event handler
$('body').keypress(function (e) {
alert(String.fromCharCode(e.which));
console.log(e);
});
// Simulate the key press
$('body').simulateKeyPress('x');
});
আপনি এটি আরও ধাক্কা দিতে পারেন এবং এটি কেবল ইভেন্টটি অনুকরণ করতে দেয় না তবে প্রকৃতপক্ষে অক্ষরটি সন্নিবেশ করতে পারে (এটি যদি কোনও ইনপুট উপাদান হয়) তবে এটি করার চেষ্টা করার সময় অনেকগুলি ক্রস-ব্রাউজারের গোচা রয়েছে। সেন্ডকিসের মতো আরও বিস্তৃত প্লাগইন ব্যবহার করা আরও ভাল ।
আগ্রহীদের জন্য, আপনি প্রকৃতপক্ষে কীবোর্ড ইনপুট ইভেন্টগুলি নির্ভরযোগ্যভাবে পুনরায় তৈরি করতে পারেন। ইনপুট অঞ্চলে পাঠ্য পরিবর্তন করতে (কার্সারগুলি সরান, বা একটি ইনপুট চরিত্রের মাধ্যমে পৃষ্ঠাটি সরাতে) আপনাকে DOM ইভেন্টের মডেলটি নিবিড়ভাবে অনুসরণ করতে হবে: http://www.w3.org/TR/DOM-Lelvel-3-Events/ # h4_events-inputevents
মডেলটি করা উচিত:
তারপরে প্রতিটি চরিত্রের জন্য:
তারপরে, বেশিরভাগের জন্য allyচ্ছিকভাবে:
এটি আসলে জাভাস্ক্রিপ্টের মাধ্যমে পৃষ্ঠার পাঠ্যকে পরিবর্তন করে (মান বিবৃতি পরিবর্তন না করে) এবং কোনও জাভাস্ক্রিপ্ট শ্রোতা / হ্যান্ডলারকে যথাযথভাবে সেট করে। সিকোয়েন্স জাভাস্ক্রিপ্টটি যদি আপনি গুছিয়ে দেন তবে যথাযথ ক্রমে আগুন লাগবে না, ইনপুট বাক্সের পাঠ্যটি বদলাবে না, নির্বাচনগুলি পরিবর্তন হবে না বা পাঠ্যক্ষেত্রে কার্সার পরবর্তী স্থানটিতে সরবে না।
দুর্ভাগ্যক্রমে কোডটি কোনও এনডিএর অধীনে কোনও নিয়োগকর্তার জন্য লেখা হয়েছিল তাই আমি এটি ভাগ করতে পারি না তবে এটি অবশ্যই সম্ভব তবে আপনাকে অবশ্যই প্রতিটি ক্রমের জন্য প্রতিটি মূল ইনপুট "স্ট্যাক" সঠিক ক্রমে পুনরায় তৈরি করতে হবে।
2019 হিসাবে, এই সমাধানটি আমার পক্ষে কাজ করেছে:
document.dispatchEvent(
new KeyboardEvent("keydown", {
key: "e",
keyCode: 69, // example values.
code: "KeyE", // put everything you need in this object.
which: 69,
shiftKey: false, // you don't need to include values
ctrlKey: false, // if you aren't going to use them.
metaKey: false // these are here for example's sake.
})
);
সিমুলেটেড কীপ্যাড সহ মোবাইল ডিভাইসগুলিকে সমর্থন করার জন্য, আমি এটি আমার ব্রাউজার গেমটিতে ব্যবহার করেছি।
স্পেসিফিকেশন: এই কোডটি একটি একক keydown
ইভেন্ট প্রেরণ করে , যখন একটি আসল কী প্রেসটি একটি keydown
ইভেন্ট (বা এটি বেশ কিছুক্ষণ ধরে রাখলে তাদের বেশ কয়েকটি) ট্রিগার করে এবং তারপরে keyup
আপনি যখন কীটি প্রকাশ করেন তখন একটি ইভেন্ট। আপনার যদি keyup
ইভেন্টগুলির প্রয়োজন হয় তবে কোড স্নিপেটে keyup
পরিবর্তন "keydown"
করে ইভেন্টগুলি অনুকরণ করাও সম্ভব "keyup"
।
এটি ইভেন্টটি পুরো ওয়েবপৃষ্ঠায় প্রেরণ করে, সুতরাং document
। ইভেন্টটি পেতে যদি আপনি কেবল একটি নির্দিষ্ট উপাদান চান তবে আপনি document
পছন্দসই উপাদানটির বিকল্প নিতে পারেন ।
Trusted
?)
এই পদ্ধতির মূল কোডের মান পরিবর্তন করে ক্রস ব্রাউজার সমর্থন করে । সূত্র
var $textBox = $("#myTextBox");
var press = jQuery.Event("keypress");
press.altGraphKey = false;
press.altKey = false;
press.bubbles = true;
press.cancelBubble = false;
press.cancelable = true;
press.charCode = 13;
press.clipboardData = undefined;
press.ctrlKey = false;
press.currentTarget = $textBox[0];
press.defaultPrevented = false;
press.detail = 0;
press.eventPhase = 2;
press.keyCode = 13;
press.keyIdentifier = "";
press.keyLocation = 0;
press.layerX = 0;
press.layerY = 0;
press.metaKey = false;
press.pageX = 0;
press.pageY = 0;
press.returnValue = true;
press.shiftKey = false;
press.srcElement = $textBox[0];
press.target = $textBox[0];
press.type = "keypress";
press.view = Window;
press.which = 13;
$textBox.trigger(press);
শুধু কাস্টম এভেন্ট ব্যবহার করুন
Node.prototype.fire=function(type,options){
var event=new CustomEvent(type);
for(var p in options){
event[p]=options[p];
}
this.dispatchEvent(event);
}
4 প্রাক্তন ctrl + z অনুকরণ করতে চান
window.addEventListener("keyup",function(ev){
if(ev.ctrlKey && ev.keyCode === 90) console.log(ev); // or do smth
})
document.fire("keyup",{ctrlKey:true,keyCode:90,bubbles:true})
এখানে একটি লাইব্রেরি যা সত্যই সহায়তা করে: https://cdn.rawgit.com/ccampbell/mousetrap/2e5c2a8adbe80a89050aaf4e02c45f02f1cc12d4/tests/libs/key-event.js
কোথা থেকে এসেছে তা আমি জানি না, তবে এটি সহায়ক is এটিতে একটি .simulate()
পদ্ধতি যুক্ত করে window.KeyEvent
, তাই আপনি এটিকে কেবল KeyEvent.simulate(0, 13)
একটি অনুকরণের জন্য enter
বা এ এর KeyEvent.simulate(81, 81)
জন্য ব্যবহার করেন 'Q'
।
আমি এটি https://github.com/ccampbell/mousetrap/tree/master/tests এ পেয়েছি ।
এটি আমার পক্ষে কাজ করেছে এবং এটি আমার পাঠ্যপুস্তকের জন্য একটি কীপ সিমুলেট করে। যদি আপনি এটি সমগ্র পৃষ্ঠার জন্য চান শুধু করা KeySimulation()
উপর <body>
ভালো <body onmousemove="KeySimulation()">
বা যদি না onmousemove
তারপর onmouseover
বা onload
কাজ খুব।
<script>
function KeySimulation()
{
var e = document.createEvent("KeyboardEvent");
if (e.initKeyboardEvent) { // Chrome, IE
e.initKeyboardEvent("keyup", true, true, document.defaultView, "Enter", 0, "", false, "");
} else { // FireFox
e.initKeyEvent("keyup", true, true, document.defaultView, false, false, false, false, 13, 0);
}
document.getElementById("MyTextArea").dispatchEvent(e);
}
</script>
<input type="button" onclick="KeySimulation();" value=" Key Simulation " />
<textarea id="MyTextArea" rows="15" cols="30"></textarea>
initKeyboardEvent
হ্রাস করা হয়। ( উত্স )
কনসোল প্রসঙ্গে সহজে ব্যবহারের কারণে এটি একবারে রোড হয়েছিল। তবে সম্ভবত এখনও দরকারী।
var pressthiskey = "q"/* <-- q for example */;
var e = new Event("keydown");
e.key = pressthiskey;
e.keyCode = e.key.charCodeAt(0);
e.which = e.keyCode;
e.altKey = false;
e.ctrlKey = true;
e.shiftKey = false;
e.metaKey = false;
e.bubbles = true;
document.dispatchEvent(e);
এখানে একটি সমাধান যা ক্রোম এবং ক্রোমিয়ামে কাজ করে (কেবলমাত্র এই প্ল্যাটফর্মগুলি পরীক্ষা করেছে)। মনে হচ্ছে কী কোডগুলি পরিচালনা করার জন্য ক্রোমের কিছু ত্রুটি বা নিজস্ব পদ্ধতি রয়েছে তাই এই সম্পত্তিটি কীবোর্ডে আলাদাভাবে যুক্ত করতে হবে।
function simulateKeydown (keycode,isCtrl,isAlt,isShift){
var e = new KeyboardEvent( "keydown", { bubbles:true, cancelable:true, char:String.fromCharCode(keycode), key:String.fromCharCode(keycode), shiftKey:isShift, ctrlKey:isCtrl, altKey:isAlt } );
Object.defineProperty(e, 'keyCode', {get : function() { return this.keyCodeVal; } });
e.keyCodeVal = keycode;
document.dispatchEvent(e);
}
এটি আমি খুঁজে পেতে পরিচালিত:
function createKeyboardEvent(name, key, altKey, ctrlKey, shiftKey, metaKey, bubbles) {
var e = new Event(name)
e.key = key
e.keyCode = e.key.charCodeAt(0)
e.which = e.keyCode
e.altKey = altKey
e.ctrlKey = ctrlKey
e.shiftKey = shiftKey
e.metaKey = metaKey
e.bubbles = bubbles
return e
}
var name = 'keydown'
var key = 'a'
var event = createKeyboardEvent(name, key, false, false, false, false, true)
document.addEventListener(name, () => {})
document.dispatchEvent(event)
টাইপস্ক্রিপ্ট সমর্থিত সমাধান সহ নেটিভ জাভাস্ক্রিপ্ট:
কী কোড বা যে কোনও সম্পত্তি আপনি ব্যবহার করছেন তা টাইপ করুন এবং এটিকে কী-বোর্ড-এভেন্টআইনেটিতে কাস্ট করুন
উদাহরণ
const event = new KeyboardEvent("keydown", {
keyCode: 38,
} as KeyboardEventInit);
আমি ক্রোমে জেএস / টাইপস্ক্রিপ্ট দিয়ে চেষ্টা করেছি। অনুপ্রেরণার জন্য এই উত্তর ধন্যবাদ ।
const x = document.querySelector('input');
const keyboardEvent = new KeyboardEvent("keypress", { bubbles: true });
Object.defineProperty(keyboardEvent, "charCode", {
get() {
return 13;
},
});
x.dispatchEvent(keyboardEvent);
ব্যবহারকারী প্রশ্নে থাকা কীটি টিপানোর সাথে সাথে আপনি সেটির জন্য একটি রেফারেন্সও সঞ্চয় করতে পারেন এবং এটি কোনও এইচটিএমএল অন্য উপাদানটিতে ব্যবহার করতে পারেন:
EnterKeyPressToEmulate<input class="lineEditInput" id="addr333_1" type="text" style="width:60%;right:0%;float:right" onkeydown="keyPressRecorder(event)"></input>
TypeHereToEmulateKeyPress<input class="lineEditInput" id="addr333_2" type="text" style="width:60%;right:0%;float:right" onkeydown="triggerKeyPressOnNextSiblingFromWithinKeyPress(event)">
Itappears Here Too<input class="lineEditInput" id="addr333_3" type="text" style="width:60%;right:0%;float:right;" onkeydown="keyPressHandler(event)">
<script>
var gZeroEvent;
function keyPressRecorder(e)
{
gZeroEvent = e;
}
function triggerKeyPressOnNextSiblingFromWithinKeyPress(TTT)
{
if(typeof(gZeroEvent) != 'undefined') {
TTT.currentTarget.nextElementSibling.dispatchEvent(gZeroEvent);
keyPressHandler(TTT);
}
}
function keyPressHandler(TTT)
{
if(typeof(gZeroEvent) != 'undefined') {
TTT.currentTarget.value+= gZeroEvent.key;
event.preventDefault();
event.stopPropagation();
}
}
</script>
আপনি যদি নিজের ইভেন্ট তৈরি করেন তবে আপনি কী কোডটি সেট করতে পারেন, আপনি কোনও বাস্তব কীবোর্ড ইভেন্ট থেকে বিদ্যমান প্যারামিটারগুলি অনুলিপি করতে পারেন (এটি প্রেরণের জন্য কাজটিকে লক্ষ্য হিসাবে উপেক্ষা করে) এবং:
ta = new KeyboardEvent('keypress',{ctrlKey:true,key:'Escape'})
আমি জানি যে প্রশ্নটি কোনও কীপ্রেস অনুকরণের জাভাস্ক্রিপ্টের জন্য জিজ্ঞাসা করে। তবে যারা কাজ করার জন্য jQuery উপায় খুঁজছেন তাদের জন্য:
var e = jQuery.Event("keypress");
e.which = 13 //or e.keyCode = 13 that simulates an <ENTER>
$("#element_id").trigger(e);
কাজ করার জন্য এই পাবার সমালোচনামূলক অংশ যে উপলব্ধি করা হয় charCode
, keyCode
এবং which
হয় সব পদ্ধতি অবচিত । সুতরাং কোডটি প্রসেসিং যদি কী প্রেস ইভেন্টটিকে এই তিনটির কোনও ব্যবহার করে, তবে এটি একটি বোগাস উত্তর পাবেন (উদাহরণস্বরূপ 0 এর একটি ডিফল্ট)।
যতক্ষণ না আপনি অবহিত পদ্ধতিতে কী প্রেস ইভেন্টটি অ্যাক্সেস করেন, যেমন key
, আপনার ঠিক আছে।
সমাপ্তির জন্য, আমি ইভেন্টটি ট্রিগার করার জন্য প্রাথমিক জাভাস্ক্রিপ্ট কোড যুক্ত করেছি:
const rightArrowKey = 39
const event = new KeyboardEvent('keydown',{'key':rightArrowKey})
document.dispatchEvent(event)
আমি একটি 'ট্যাব' প্রেস অনুকরণ করতে চেয়েছিলাম ... ট্রেভরের উত্তরটি প্রসারিত করে, আমরা দেখতে পাচ্ছি যে 'ট্যাব' এর মতো একটি বিশেষ কী টিপতে পারে তবে আমরা কোনও 'ট্যাব' প্রেসের প্রকৃত ফলাফল দেখতে পাই না .. ।
'অ্যাক্টিভেটমেন্ট' এর জন্য এই ইভেন্টগুলি প্রেরণের পাশাপাশি গ্লোবাল ডকুমেন্ট উভয় বস্তুর জন্য চেষ্টা করার চেষ্টা করা হয়েছে - উভয়ের কোড নীচে যুক্ত করা হয়েছে;
নীচে স্নিপেট :
var element = document.getElementById("firstInput");
document.addEventListener("keydown", function(event) {
console.log('we got key:', event.key, ' keyCode:', event.keyCode, ' charCode:', event.charCode);
/* enter is pressed */
if (event.keyCode == 13) {
console.log('enter pressed:', event);
setTimeout(function() {
/* event.keyCode = 13; event.target.value += 'b'; */
theKey = 'Tab';
var e = new window.KeyboardEvent('focus', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
e = new window.KeyboardEvent('keydown', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
e = new window.KeyboardEvent('beforeinput', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
e = new window.KeyboardEvent('keypress', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
e = new window.KeyboardEvent('input', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
e = new window.KeyboardEvent('change', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
e = new window.KeyboardEvent('keyup', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.activeElement.dispatchEvent(e);
}, 4);
setTimeout(function() {
theKey = 'Tab';
var e = new window.KeyboardEvent('focus', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
e = new window.KeyboardEvent('keydown', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
e = new window.KeyboardEvent('beforeinput', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
e = new window.KeyboardEvent('keypress', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
e = new window.KeyboardEvent('input', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
e = new window.KeyboardEvent('change', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
e = new window.KeyboardEvent('keyup', {
bubbles: true,
key: theKey,
keyCode: 9,
charCode: 0,
});
document.dispatchEvent(e);
}, 100);
} else if (event.keyCode != 0) {
console.log('we got a non-enter press...: :', event.key, ' keyCode:', event.keyCode, ' charCode:', event.charCode);
}
});
<h2>convert each enter to a tab in JavaScript... check console for output</h2>
<h3>we dispatchEvents on the activeElement... and the global element as well</h3>
<input type='text' id='firstInput' />
<input type='text' id='secondInput' />
<button type="button" onclick="document.getElementById('demo').innerHTML = Date()">
Click me to display Date and Time.</button>
<p id="demo"></p>