تلخص هذه المقالة وتحليل مشكلات التوافق المشتركة في JavaScript في متصفحات IE و Firefox. شاركه للرجوع إليه ، على النحو التالي:
استمارة
document.formname.item ("itemName")IE: يمكنك استخدام document.formname.item ("itemName") أو المستند.
Firefox: فقط document.formname.elements ["elementName"]
الحل: استخدم المستند.
كائنات فئة التجميع
IE: يمكنك استخدام () أو [] للحصول على كائنات فئة التجميع ؛
Firefox: فقط استخدم [] للحصول على كائنات فئة التجميع.
الحل: استخدم [] للحصول على كائنات فئة التجميع بطريقة موحدة.
خصائص مخصصة
IE: يمكنك استخدام طريقة الحصول على سمات منتظمة للحصول على سمات مخصصة ، أو يمكنك استخدام getAttribute () للحصول على سمات مخصصة
Firefox: يمكنك فقط استخدام getAttribute () للحصول على خصائص مخصصة.
الحل: الحصول على سمات مخصصة بشكل موحد من خلال getAttribute ().
اكتساب العناصر
eval ("idname")IE: يمكنك استخدام eval ("idname") أو getElementById ("idname") للحصول على كائن html مع idname ؛
Firefox: يمكنك فقط استخدام getElementById ("idname") للحصول على كائنات HTML مع idname مع idname.
الحل: استخدم getElementByID ("idname") للحصول على كائن HTML مع معرف كمعرف.
تسمية مكررة
مشكلة مع نفس الاسم المتغير مثل معرف كائن HTML معين
IE: يمكن استخدام معرف كائن HTML مباشرة كاسم متغير للكائن التابع للمستند ، ولكن لا يمكن استخدامه تحت Firefox ؛
Firefox: يمكنك استخدام نفس الاسم المتغير مثل معرف كائن HTML ، ولكن لا يمكنك في IE.
الحل البديل: استخدم المستند. من الأفضل عدم أخذ أسماء متغيرة بنفس معرف كائن HTML لتقليل الأخطاء ؛ عند إعلان المتغيرات ، أضف VAR لتجنب الغموض.
كونست
IE: فقط استخدم الكلمة الرئيسية VAR لتحديد المتغيرات.
Firefox: يمكنك استخدام الكلمة الرئيسية Const أو الكلمة الرئيسية VAR لتحديد المتغيرات.
الحل: استخدم الكلمة الرئيسية VAR لتحديد المتغيرات بشكل موحد.
input.type
input.Type مشكلة السمة
IE: سمة input.type هي القراءة فقط.
Firefox: تتم قراءة وسمات input.type.
Window.event
لا يمكن تشغيل Window.Event إلا تحت IE ، وليس في Firefox ، لأنه لا يمكن استخدام حدث Firefox إلا في المشهد حيث يحدث الحدث.
Firefox: يجب إضافة الحدث من مصدر تمرير المعلمة. IE يتجاهل هذه المعلمة ويستخدم Window.event لقراءة الحدث.
حل:
<script language = "javaScript"> function fun (e) {e = e؟ E: (window.event؟ window.event: null) ؛ } </script>event.x و event.y
الوصف: تحت IE ، يحتوي الكائن حتى على سمات X و Y ، ولكن ليس لديه سمات Pagex و Pagey ؛ تحت Firefox ، يحتوي الكائن الزوجي على سمات Pagex و Pagey ، ولكن ليس لها سمات X و Y.
الحل: استخدم MX (MX = Event.x؟
Event.Srcelement
أي: يحتوي كائن الحدث على خاصية srcelement ، ولكن ليس لديه خاصية مستهدفة ؛
Firefox: حتى الكائن لديه خاصية مستهدفة ، ولكن لا يوجد خاصية srcelement.
الحل: استخدم OBJ (OBJ = event.srcelement؟ Event.Srcelement: Event.Target ؛) بدلاً من Event.Srcelement تحت IE أو Event.Target تحت Firefox. يرجى أيضًا الانتباه إلى قضايا التوافق في الحدث.
window.location.href
IE أو Firefox2.0.x: يمكنك استخدام window.location أو window.location.href ؛
Firefox1.5.x: يتم استخدام window.location فقط
الحل البديل: استخدم window.location بدلاً من window.location.href.
نوافذ مشروطة وغير الوسائط
IE: يمكن فتح النوافذ المشروطة وغير الوسائط من خلال showmodaldialog و showmodialog
Firefox: لا!
الحل: استخدم window.open (pageurl ، الاسم ، المعلمات) لفتح نافذة جديدة.
إذا كنت بحاجة إلى تمرير معلمات في نافذة الطفل مرة أخرى إلى النافذة الأصل ، فيمكنك استخدام Window.Opener في نافذة الطفل للوصول إلى النافذة الأصل. على سبيل المثال: var parwin = window.opener ؛ parwin.document.getElementById ("aqing"). value = "aqing" ؛
إطار
الإطار التالي مثال:
<frame src = "xxx.html" id = "frameid" name = "framename" />
1. الوصول إلى كائن الإطار:
[الكائن الذي تم إرجاعه في IE هو كائن ، وسيتم عرض النوع المحدد في FF ، مثل: نافذة الكائن]
IE: استخدم window.frameid أو window.framename للوصول إلى كائن الإطار هذا. يمكن أن يكون لـ FrameId و FramEname نفس الاسم.
Firefox: Window.framename فقط يمكن استخدامها للوصول إلى كائن الإطار هذا.
في كل من IE و Firefox ، يمكنك استخدام window.document.getElementById ("FrameId") للوصول إلى كائن الإطار هذا.
2. محتوى إطار التبديل:
في كل من IE و Firefox ، يمكنك استخدام window.document.getElementById ("TestFrame").
إذا كنت بحاجة إلى تمرير المعلمات في الإطار مرة أخرى إلى النافذة الأصل (لاحظ أنها ليست فتاحة ، ولكن إطار الأصل) ، يمكنك استخدام الأصل في الإطار للوصول إلى النافذة الأصل. على سبيل المثال: parent.document.form1.filename.value = "a" ؛
جسم
أي: يجب أن يكون الجسم موجودًا بعد قراءة العلامة الجسدية بالكامل من قبل المتصفح.
Firefox: الجسم موجود قبل قراءة علامة الجسم بالكامل من قبل المتصفح.
طريقة تفويض الأحداث
IE: نسخة الكود كما يلي: document.body.onload = enject ؛ // تم تنفيذ وظيفة الحقن () قبل هذا
Firefox: نسخة الكود كما يلي: document.body.onload = enject () ؛
عنصر الوالدين
الفرق بين Firefox و IE العنصر الوالد (الوالدين)
أي: obj.parentElement
Firefox: obj.parentnode
الحل: لأن كلا من Firefox و IE DOM ، باستخدام OBJ.ParentNode هو خيار جيد.
مؤشر الماوس المؤشر
المؤشر: اليد مقابل المؤشر: مؤشر
Firefox: اليد غير مدعومة
أي: مؤشر دعم
الحل: استخدم المؤشر بشكل موحد
نص المحتوى
النص الداخلي يعمل بشكل طبيعي في IE. ومع ذلك ، لا يعمل النص الداخلي في Firefox ، مطلوب TextContent.
حل:
if (navigator.appname.indexof ("explorer")> -1) {document.getElementById ('element'). innertext = "my text" ؛ } آخر {document.getElementById ('element'). textC ؛ }العملية على الطاولة
IE ، Firefox وغيرها من المتصفحات لديها عمليات مختلفة على علامات الجدول. في IE ، لا يُسمح بتعيين قيم innerhtml للجدول و Tr. عند استخدام JS لإضافة TR ، فإن طريقة التذييل غير مفيدة.
حل:
// إضافة سطر فارغ إلى الجدول: var row = otable.inserTrow (-1) ؛ var cell = document.createElement ("td") ؛ cell.innerhtml = "" ؛ cell.className = "a" ؛ row.appendchild (Cell) ؛جمع الخيارات
تشغيل مجموعة الخيارات في SELECT
بالإضافة إلى [] ، SelectName.options.item () ممكن أيضًا. بالإضافة إلى ذلك ، يمكن استخدام SelectName.options.length ، SelectName.options.add/إزالة في كلا المتصفحين.
*لاحظ أنه يتم تعيين العنصر بعد إضافة ، وإلا فسوف يفشل.
XMLHTTP
if (window.xmlHttpRequest) {xmlHtp = new xmlHttpRequest () ؛ } آخر if (window.activexobject) {// code for ie xmlhttp = new ActivexObject ("microsoft.xmlhttp") ؛ } if (xmlhttp) {xmlhttp.onReadyStateChange = xmlhttpChange ؛ xmlhttp.open ("get" ، url ، true) ؛ xmlhttp.send () ؛ }لمزيد من المعلومات حول المحتوى المتعلق بـ JavaScript ، يرجى مراجعة موضوعات هذا الموقع: "ملخص أخطاء JavaScript ومهارات تصحيح الأخطاء" ، "ملخص استخدام JavaScript للعمليات الرياضية" ، "ملخص لمهارات تشغيل JSON في JavaScript ،" ملخص ، "ملخص ،" ملخص ، "ملخص ،" ملخص مهارات "، ملخص ،" ملخص ، "المهارات ،" ملخص ، "ملخص ،" المهارات "،" ملخص ، "المهارات" ، "المهارات ،". "ملخص هياكل بيانات JavaScript ومهارات الخوارزمية" و "ملخص خوارزمية JavaScript Traversal والمهارات"
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.