"إرجاع خطأ" في معالج الأحداث المرفق بواسطة AddeventListener أو element.on*
-
27-09-2019 - |
سؤال
صحيح دعنا نخرج هذا بالطريقة أولاً. نعم ، أريد إخفاء قائمة السياق. لا ، أنا لا أحاول منع شخص ما يرفع المحتوى من صفحتي. استخدامه المقصود هو إدخال لعبة في المتصفح وسيقتصر على منطقة محددة على صفحة الويب.
الانتقال من الأيديولوجية إلى التقنية ...
var mouse_input = function (evt) {
// ...
return false;
}
document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful
هل يمكن لأحد أن يشرح لي لماذا addEventListener
الإصدار غير قادر على إيقاف قائمة السياق من إطلاق النار؟ الفرق الوحيد الذي تمكنت من رؤيته في سفاري'س مفتش الويب كان ذلك document.onmousedown
كان isAttribute
القيمة التي كانت صحيحة في حين addEventListener
كان الإصدار نفس القيمة الخاطئة.
المحلول
لذلك أصبح بحثي غير المذهل فجأة مثمرًا.
var mouse_input = function (evt) {
evt.preventDefault();
}
document.addEventListener('contextmenu', mouse_input, false);
يعمل ل سفاري, ثعلب النار, الأوبرا. preventDefault()
يوقف الحدوث من الحدوث. اضطررت إلى تغيير الحدث الذي تم الاستماع إليه لاستيعابه سفاري وهو أكثر منطقية على أي حال. مزيد من المعلومات: الوظائف التي تنفذ EventListener لا ينبغي لإرجاع القيم هكذا return false
لم يكن له أي تأثير.
نصائح أخرى
لشرح الفرق .. element.onmousedown = somefunction;
هي مهمة مطلقة. أنت استبدال معالج الحدث على العنصر. element.addEventListener(...)
هو ، كما يوحي الاسم ، مضيفا معالج بالإضافة إلى أي معالج (ق) متصل بالفعل بالحدث.