سؤال

أحاول معرفة كيفية منع onBeforeUnload من تشغيل الحدث في IE9+ عند استخدام الروابط التي لا تحتوي على hrefs.

لقد قمت بإعداد كمان هنا (اختبار مبسط لسيناريو حقيقي)، والذي يصف إلى حد كبير ما أحاول تحقيقه.حينما onBeforeUnload يتم تشغيله (لذلك، عند النقر على الرابط)، تصبح خلفية الصفحة زرقاء.عند الاستخدام attachEvent أستطيع بسهولة return false لمنع حدوث ذلك.ولكن عند إضافة حدث النقر على الرابط باستخدام addEventListener, ، بيان الإرجاع لا يحدث أي فرق.أكثر أو أقل، أود أن يتصرف الرابط 4 مثل الرابط 2.

نعم، التغيير من الروابط إلى الأزرار سيكون حلاً.سيكون تغيير وظيفة onBeforeUnload (مثل وجود هذا الرمز كجزء من وظيفة النقر) أمرًا آخر.ولكن للأسف، ليس لدي السيطرة على تلك الأجزاء من التعليمات البرمجية.

لذا.هل هناك أي طريقة يمكنني من خلالها إيقاف أحداث النقر على الروابط من المشغل onBeforeUnload عند الإعداد مع addEventListener؟أو هل قام MS بإزالة هذا الاحتمال عند الترحيل من attachEvent ل addEventListener, ، لأن منع المستخدمين من الانتقال بعيدًا عن الصفحة فكرة سيئة بشكل عام؟

هل كانت مفيدة؟

المحلول

عند استخدام addEventListener يمكنك إضافة معلمة إلى وظيفة المستمع الخاص بك.
ستحتوي المعلمة على الحدث الذي تم إطلاقه (يمكنك إيقاف هذا)
يستخدم event.preventDefault() بافتراض أن المعلمة تسمى الحدث.

انظر الى هذا jsFiddle كمثال

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