LightWindow وIE7، "السطر 444 - الكائن لا يدعم هذه الخاصية أو الأسلوب"

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

سؤال

لقد تلقيت للتو مشكلة في LightWindow وIE7 وتجاوزتها، حيث يؤدي، عند تحميل الصفحة، إلى ظهور خطأ JavaScript في السطر 444 من lightwindow.js, ، بدعوى أن object does not support this property or method.على الرغم من العثور على منشورات مختلفة في مختلف المنتديات، لم أجد أي نتيجة على Google تحتوي على حل، لذلك أقوم بنشر هذا هنا على أمل أن يساعد شخصًا ما / نفسي لاحقًا.

اقترح الكثيرون ترتيبًا محددًا لملفات البرامج النصية، لكنني كنت أستخدم هذا الترتيب بالفعل (النموذج الأولي، النصي، النافذة الخفيفة).

هذه هي الخطوات التي اتخذتها والتي يبدو أنها نجحت أخيرًا، وأنا أكتبها هنا فقط كسجل لأنني لا أعرف وليس لدي الوقت لاختبار أي منها على وجه التحديد "أصلح" المشكلة:

  1. تم نقل المكالمة إلى lightwindow.js إلى أسفل الصفحة.
  2. تم تغيير السطر 444 إلى: if (this._getGalleryInfo(link.rel)) {
  3. تم تغيير السطر 1157 إلى: if (this._getGalleryInfo(this.element.rel)) {
  4. أخيرًا، أرفقت (وهذا أمر قذر، اعتذاري) السطور من 1417 إلى 1474 بـ try/catch كتلة، ابتلاع الاستثناء.

يحرر:

أدركت أن هذا كسر فايرفوكس.إضافة ما يلي كسطر 445 يجعله يعمل الآن - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

إنه ليس حلاً لطيفًا للغاية، ولكن صفحتي (التي تحتوي على رابط lightwindow بدون علامة "rel"، والعديد من روابط lightwindow التي تحتوي على علامات "rel"، ورابط واحد "inline") تعمل بشكل جيد في IE7 الآن.يرجى التعليق إذا كان لديك أي شيء تضيفه حول هذه المشكلة أو المشاكل/التحسينات على الحل الذي أقترحه.

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

المحلول

لقد أصلحت هذا عن طريق تغيير السطر 444 إلى:

var gallery = this._getGalleryInfo(link.rel)

ثم قم بتغيير بيان المقارنة اللاحق إلى:

if(gallery.length > 0)
{
    // Rest of code here...

... والذي يبدو أنه قام بفرزها في IE6+ وأبقها تعمل في Firefox وما إلى ذلك.

لم أغير السطر 1157 على الإطلاق، لكنني لم أقرأ الكود لأرى ما أفعله بالفعل لذا لا يمكنني التعليق على مدى ملاءمته؟

أشك في ؟قد تكون سمة rel المستخدمة في المثال (Evoution?[man]) هي سبب المشكلة مع IE ولكن بدون قضاء بعض الوقت في اختبار بعض الأشياء، لا يمكنني التأكد؟

هث.

نصائح أخرى

بدلاً من المحاولة..الالتقاط ربما يمكنك تجربة الاستخدام

if( this && this._getGalleryInfo )
{
    //use the function

}

يمكنك أيضًا التحقق بنفس الطريقة this.element.rel ( if(this && this.element && this.element.rel) ...) قبل استخدامه.

يبدو أن هناك حالة أن _getGalleryInfo أو this.element.rel لم تتم تهيئته بعد، لذلك لن يكون موجودًا بعد.تحقق مما إذا كان موجودًا ثم إذا كنت أستخدمه.

بالطبع قد أكون مخطئًا تمامًا، والطريقة الوحيدة لمعرفة ذلك هي عن طريق اختباره.

واجهت نفس المشكلة مع Lightwindow 2.0، IE6، IE7، IE8 (بيتا)؛لقد قمت بالحل بالطريقة التالية لـ IE6، IE7، IE8 (بيتا).

بدلاً من:
 if(gallery = this._getGalleryInfo(link.rel))
وضعت على السطرين 443 و 1157:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

نأمل أن يساعد هذا!

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