صارمة doctype منع الوصول إلى دوم متغير في فايرفوكس

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

  •  03-07-2019
  •  | 
  •  

سؤال

أنا لا أعرف إذا كان هذا هو المعروف 'شيء' أو شيء جديد في أي إصدار من فايرفوكس هو فقط تحديث نفسها أيضا - ولكن في أي حال ليس لدي أي فكرة عن كيفية جوجل عن هذا السؤال يجب أن نسأل هنا.

لدي شعبة في DOM التي أحاول الوصول إليها مباشرة عن طريق id, في أبسط شكل مثل هذا:

 alert(btnTest.id);

هذا يعمل بشكل جيد في جميع المتصفحات, ولكن كان يسبب مشاكل في فايرفوكس التي أدت في الواقع إلى المتصفح يجري في غريب 'كسر' الدولة.

الخطأ كان الحصول على كان 'btnTest لم يتم تعريف'.أنا لم تحصل على هذا الخطأ في Safari, Internet Explorer أو كروم.

أفترض أنني قد متطابقة علامات HTML أو جافا سكريبت الأقواس المتعرجة أو أي شيء آخر في عداد المفقودين.في نهاية المطاف بعد تجريد كل شيء حاولت إزالة DOCTYPE.فجأة في فايرفوكس (v 3.0.10) بدأت العودة الصحيحة ID كما هو متوقع.

ما يجري!!!??بالتأكيد "صارمة" يجب وضع يسمح لي للوصول إلى اسمه العناصر ، و إذا لم يكن ثم لماذا جميع المتصفحات الأخرى اسمحوا لي.

ملاحظة: أنا يمكن أن تعمل بسهولة مع $('#btnTest')[0].معرف ، وهذا ما أنا ذاهب الى القيام به الآن حتى أستطيع معرفة أفضل حل.

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" class="blueCircles">

 <head>

    <script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

    <script>
        $(function() {
            alert("ID retrieved through jQuery: " + $('#btnTest')[0].id);
            alert("ID retrieved by accessing global variable: " + btnTest.id);
        });

    </script>

</head>
<body>
    <div id="btnTest">
    </div>
</body>
</html>
هل كانت مفيدة؟

المحلول

لا يوجد شيء في أي مواصفات W3C التي تقول مراجع الكائنات ينبغي أن تنشأ في العالمية البرمجة نطاق العناصر مع id سمات.هذا يعتبر uneccessarily تلوث مساحة العالمي و يمكن أن يؤدي في الخلط بين الأخطاء.

فايرفوكس يحدد المراجع عند تشغيل في وضع المراوغات لأغراض التوافق IE.جوني Stenback يفسر في الثالث التعليق على علة إضافة هذا الدعم لماذا هذا ليس المعتمدة في وضع المعايير:

هذه الميزة لا تؤثر على مستوى متوافق مع التعليمات البرمجية التي على سبيل المثال بالتحقق من وجود [كذا] العالمية متغير تعيين مرة واحدة فقط.مع هذا التغيير ، أن "varible" [كذا] قد يكون الآن إشارة إلى عنصر في الوثيقة و قد لا تعمل التعليمات البرمجية طريقة المطور المقصود.

هذا هو السبب قررنا أن نجعل هذه المراوغات فقط.

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