"إرجاع خطأ" في معالج الأحداث المرفق بواسطة AddeventListener أو element.on*

StackOverflow https://stackoverflow.com/questions/3462123

سؤال

صحيح دعنا نخرج هذا بالطريقة أولاً. نعم ، أريد إخفاء قائمة السياق. لا ، أنا لا أحاول منع شخص ما يرفع المحتوى من صفحتي. استخدامه المقصود هو إدخال لعبة في المتصفح وسيقتصر على منطقة محددة على صفحة الويب.

الانتقال من الأيديولوجية إلى التقنية ...

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(...) هو ، كما يوحي الاسم ، مضيفا معالج بالإضافة إلى أي معالج (ق) متصل بالفعل بالحدث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top