tl; dr : नहीं, आप किसी भी मूल समर्थित तरीके से ऐसा नहीं कर सकते।
मुझे इसे प्राप्त करने का एकमात्र तरीका एक कस्टम स्टोरेज ऑब्जेक्ट बनाना होगा जहां आप श्रोताओं को जोड़े रखने का रिकॉर्ड रखेंगे। निम्नलिखित पंक्तियों के साथ कुछ:
/* Create a storage object. */
var CustomEventStorage = [];
चरण 1: सबसे पहले, आपको एक फ़ंक्शन की आवश्यकता होगी जो स्टोरेज ऑब्जेक्ट को पीछे कर सकता है और तत्व (या गलत) दिए गए तत्व के रिकॉर्ड को वापस कर सकता है।
/* The function that finds a record in the storage by a given element. */
function findRecordByElement (element) {
/* Iterate over every entry in the storage object. */
for (var index = 0, length = CustomEventStorage.length; index < length; index++) {
/* Cache the record. */
var record = CustomEventStorage[index];
/* Check whether the given element exists. */
if (element == record.element) {
/* Return the record. */
return record;
}
}
/* Return false by default. */
return false;
}
चरण 2: फिर, आपको एक फ़ंक्शन की आवश्यकता होगी जो एक इवेंट श्रोता को जोड़ सकता है लेकिन श्रोता को स्टोरेज ऑब्जेक्ट में भी डाल सकता है।
/* The function that adds an event listener, while storing it in the storage object. */
function insertListener (element, event, listener, options) {
/* Use the element given to retrieve the record. */
var record = findRecordByElement(element);
/* Check whether any record was found. */
if (record) {
/* Normalise the event of the listeners object, in case it doesn't exist. */
record.listeners[event] = record.listeners[event] || [];
}
else {
/* Create an object to insert into the storage object. */
record = {
element: element,
listeners: {}
};
/* Create an array for event in the record. */
record.listeners[event] = [];
/* Insert the record in the storage. */
CustomEventStorage.push(record);
}
/* Insert the listener to the event array. */
record.listeners[event].push(listener);
/* Add the event listener to the element. */
element.addEventListener(event, listener, options);
}
चरण 3: आपके प्रश्न की वास्तविक आवश्यकता के संबंध में, आपको यह जाँचने के लिए निम्न फ़ंक्शन की आवश्यकता होगी कि क्या किसी तत्व को किसी निर्दिष्ट ईवेंट के लिए इवेंट श्रोता जोड़ा गया है।
/* The function that checks whether an event listener is set for a given event. */
function listenerExists (element, event, listener) {
/* Use the element given to retrieve the record. */
var record = findRecordByElement(element);
/* Check whether a record was found & if an event array exists for the given event. */
if (record && event in record.listeners) {
/* Return whether the given listener exists. */
return !!~record.listeners[event].indexOf(listener);
}
/* Return false by default. */
return false;
}
चरण 4: अंत में, आपको एक फ़ंक्शन की आवश्यकता होगी जो एक श्रोता को स्टोरेज ऑब्जेक्ट से हटा सकता है।
/* The function that removes a listener from a given element & its storage record. */
function removeListener (element, event, listener, options) {
/* Use the element given to retrieve the record. */
var record = findRecordByElement(element);
/* Check whether any record was found and, if found, whether the event exists. */
if (record && event in record.listeners) {
/* Cache the index of the listener inside the event array. */
var index = record.listeners[event].indexOf(listener);
/* Check whether listener is not -1. */
if (~index) {
/* Delete the listener from the event array. */
record.listeners[event].splice(index, 1);
}
/* Check whether the event array is empty or not. */
if (!record.listeners[event].length) {
/* Delete the event array. */
delete record.listeners[event];
}
}
/* Add the event listener to the element. */
element.removeEventListener(event, listener, options);
}
स्निपेट:
window.onload = function () {
var
/* Cache the test element. */
element = document.getElementById("test"),
/* Create an event listener. */
listener = function (e) {
console.log(e.type + "triggered!");
};
/* Insert the listener to the element. */
insertListener(element, "mouseover", listener);
/* Log whether the listener exists. */
console.log(listenerExists(element, "mouseover", listener));
/* Remove the listener from the element. */
removeListener(element, "mouseover", listener);
/* Log whether the listener exists. */
console.log(listenerExists(element, "mouseover", listener));
};
<!-- Include the Custom Event Storage file -->
<script src = "https://cdn.rawgit.com/angelpolitis/custom-event-storage/master/main.js"></script>
<!-- A Test HTML element -->
<div id = "test" style = "background:#000; height:50px; width: 50px"></div>
हालाँकि ओपी ने सवाल पोस्ट किए हुए 5 साल से अधिक समय बीत चुका है, मेरा मानना है कि भविष्य में इस पर ठोकर खाने वाले लोगों को इस जवाब से फायदा होगा, इसलिए बेझिझक सुझाव दें या इसमें सुधार करें। 😊