1. document.formname.item ("itemName") مشكلة
وصف المشكلة: في IE ، يمكنك استخدام document.formname.item ("itemName") أو المستند. في Firefox ، يمكنك فقط استخدام document.formname.elements ["elementName"].
الحل: استخدم المستند.
2. مشكلة كائن المجموعة
وصف المشكلة: في IE ، يمكنك استخدام () أو [] للحصول على كائن فئة المجموعة ؛ في Firefox ، يمكنك فقط استخدام [] للحصول على كائن فئة التجميع.
الحل: استخدم [] للحصول على كائنات فئة التجميع بطريقة موحدة.
3. مشكلات السمة المخصصة
وصف المشكلة: في IE ، يمكنك استخدام طريقة الحصول على سمات منتظمة للحصول على سمات مخصصة ، أو يمكنك استخدام getAttribute () للحصول على سمات مخصصة ؛ في Firefox ، يمكنك فقط استخدام getAttribute () للحصول على سمات مخصصة.
الحل البديل: الحصول على سمات مخصصة بشكل موحد من خلال getAttribute ().
4. Eval ("idname") مشكلة
وصف المشكلة: في IE ، يمكنك استخدام eval ("idname") أو getElementById ("idname") للحصول على كائن HTML مع idname ؛ في Firefox ، يمكنك فقط استخدام GetElementById ("idname") للحصول على كائن HTML باستخدام idname.
الحل: استخدم getElementByID ("idname") للحصول على كائن HTML مع معرف كمعرف.
5. مشكلة الاسم المتغير ومعرف كائن HTML معين
وصف المشكلة: بموجب IE ، يمكن استخدام معرف كائن HTML مباشرة كاسم متغير للكائن التابع للمستند ، ولكن ليس في Firefox ؛ تحت Firefox ، يمكن استخدام الاسم المتغير الذي هو نفسه معرف كائن HTML ، ولكن ليس في IE.
الحل البديل: استخدم المستند. من الأفضل عدم أخذ أسماء متغيرة بنفس معرف كائن HTML لتقليل الأخطاء ؛ عند إعلان المتغيرات ، أضف الكلمة الرئيسية VAR لتجنب الغموض.
6. قضية const
وصف المشكلة: في Firefox ، يمكنك استخدام الكلمة الرئيسية Const أو الكلمة الرئيسية VAR لتحديد الثوابت ؛ في IE ، يمكنك فقط استخدام الكلمة الرئيسية VAR لتحديد الثوابت.
الحل: استخدم الكلمة الرئيسية VAR لتحديد الثوابت بشكل موحد.
7. مشكلة سمة الإدخال.
وصف المشكلة: خاصية input.type تحت IE هي القراءة فقط ؛ لكن خاصية input.type تحت Firefox يتم قراءة الكتابة.
الحل: لا تعدل خاصية input.type. إذا كان عليك تعديله ، فيمكنك أولاً إخفاء الإدخال الأصلي ثم أدخل عنصر إدخال جديد في نفس الموضع.
8. Window.Event مشكلة
وصف المشكلة: لا يمكن تشغيل Window.Event إلا تحت IE ، وليس في Firefox ، لأنه لا يمكن استخدام حدث Firefox إلا في المشهد الذي يحدث فيه الحدث.
الحل: أضف معلمات الحدث إلى الوظيفة التي يحدث فيها الحدث ، واستخدم var myevent = evt؟ evt: (window.event؟ window.event: null)
مثال:
<type type = "button" onClick = "dosomething (event)"/> <script language = "javaScript"> function dosomething (evt) {var myevent = evt؟ evt: (window.event؟9. event.x و event.y قضايا
وصف المشكلة: تحت IE ، يحتوي الكائن الزوجي على سمات x و y ، ولكن لا توجد سمات pagex و pagey ؛ تحت Firefox ، يحتوي الكائن الزوجي على سمات pagex و pagey ، ولكن لا توجد سمات x و y.
الحل: var myx = event.x؟ event.x: event.pagex ؛ var myy = event.y؟ event.y: event.pagey ؛
إذا كنت تفكر في العدد الثامن ، فما عليك سوى استخدام MyEvent بدلاً من الحدث.
10. الحدث. مشكلة
وصف المشكلة: بموجب IE ، يحتوي الكائن الزوجي على خاصية srcelement ، ولكن لا يوجد خاصية مستهدفة ؛ تحت Firefox ، يحتوي الكائن حتى على خاصية مستهدفة ، ولكن لا يوجد خاصية srcelement.
الحل: استخدم srcobj = event.srcelement؟ event.srcelement: event.target ؛
إذا كنت تفكر في العدد الثامن ، فما عليك سوى استخدام MyEvent بدلاً من الحدث.
11. window.location.href مشكلة
وصف المشكلة: في IE أو Firefox2.0.x ، يمكنك استخدام window.location أو window.location.href ؛ في Firefox1.5.x ، يمكنك فقط استخدام window.location.
الحل البديل: استخدم window.location بدلاً من window.location.href. بالطبع ، يمكنك أيضًا التفكير في استخدام طريقة site.replace ().
12. مشاكل النوافذ المشروطة وغير الوسائط
وصف المشكلة: في ظل IE ، يمكن فتح النوافذ المشروطة وغير الوسائط من خلال ShowModaldialog و ShowModialog ؛ تحت Firefox ، لا يمكن.
الحل: استخدم window.open (pageurl ، الاسم ، المعلمات) لفتح نافذة جديدة.
إذا كنت بحاجة إلى تمرير معلمات في نافذة الطفل مرة أخرى إلى النافذة الأصل ، فيمكنك استخدام Window.Opener في نافذة الطفل للوصول إلى النافذة الأصل. إذا احتاجت النافذة الأصل إلى التحكم في نافذة الطفل ، فاستخدم VAR SubWindow = Window.Open (pageurl ، الاسم ، المعلمات) ؛ للحصول على كائن النافذة المفتوح حديثًا.
ثلاثة عشر قضايا الإطار والإطارات
الإطار التالي مثال:
(1) كائن إطار الوصول
IE: استخدم window.frameid أو window.framename للوصول إلى كائن الإطار هذا ؛
Firefox: استخدم window.framename للوصول إلى كائن الإطار هذا ؛
الحل: استخدم window.document.getElementById ("FrameId") للوصول إلى كائن الإطار هذا ؛
(2) محتوى إطار التبديل
في كل من IE و Firefox ، يمكنك استخدام window.document.getElementById ("FrameId"). src = "webjx.com.html" أو window.framename.location = "webjx.com.html" لتبديل محتوى الإطار ؛
إذا كنت بحاجة إلى تمرير المعلمات في الإطار مرة أخرى إلى النافذة الأصل ، فيمكنك استخدام الكلمة الرئيسية الأصل في الإطار للوصول إلى النافذة الأصل.
14. مشكلة تحميل الجسم
وصف المشكلة: يوجد جسم جسم Firefox قبل قراءة علامة الجسم بالكامل بواسطة المتصفح ؛ على الرغم من أن كائن الجسم الخاص بـ IE يجب أن يكون موجودًا بعد قراءة علامة الجسم بالكامل من قبل المتصفح.
[ملاحظة] لم يتم التحقق من هذه المشكلة بالفعل بعد ، وسيتم تعديلها بعد التحقق.
[ملاحظة] ثبت أن المشكلات المذكورة أعلاه غير موجودة في IE6 و Opera9 و Firefox2. يمكن لبرنامج نصي JS البسيط الوصول إلى جميع الكائنات والعناصر التي تم تحميلها قبل البرنامج النصي ، حتى لو لم يتم تحميل هذا العنصر بعد.
15. طريقة تفويض الأحداث
وصف المشكلة: في IE ، استخدم document.body.onload = الحقن ؛ حيث تم تنفيذ وظيفة الحقن () قبل ذلك ؛ في Firefox ، استخدم document.body.onload = enject () ؛
الحل: استخدم document.body.onload = دالة جديدة ('enject ()') ؛ أو المستند.
[ملاحظة] الفرق بين الوظيفة والوظيفة
16. الفرق بين العنصر الأصل الذي تم الوصول إليه
وصف المشكلة: بموجب IE ، استخدم OBJ.ParentElement أو OBJ.ParentNode للوصول إلى العقدة الوالدية لـ OBJ ؛ تحت Firefox ، استخدم OBJ.ParentNode للوصول إلى العقدة الوالدية لـ OBJ.
الحل: نظرًا لأن كلا من Firefox و IE DOM ، يتم استخدام OBJ.ParentNode للوصول إلى عقدة الوالدين لـ OBJ.
17. مشكلة النص الداخلي.
وصف المشكلة: يعمل النص الداخلي بشكل صحيح في IE ، لكن النص الداخلي لا يعمل في Firefox.
الحل البديل: استخدم TextContent بدلاً من النص الداخلي في المتصفحات غير IE.
مثال:
if (navigator.appname.indexof ("explorer")> -1) {document.getElementById ('element'). innertext = "my text" ؛ } آخر {document.getElementById ('element'). textContent = "؛ text my" ؛ }[ملاحظة] innerhtml مدعوم من قبل متصفحات مثل IE و Firefox. أخرى ، مثل Outerhtml ، مدعومة فقط من قبل IE ، لذلك من الأفضل عدم استخدامه.
18. قضايا تشغيل الجدول
وصف المشكلة: IE ، Firefox وغيرها من المتصفحات لها عمليات مختلفة على علامات الجدول. في IE ، لا يُسمح بتعيين قيم innerhtml للجدول و Tr. عند استخدام JS ، لا يعمل استخدام طريقة AppendChild. Document.AppendChild يدعم Firefox عند إدخال الصفوف في الجداول ، ولكن IE لا يدعمهم.
الحل: أدخل الصفوف في tbody ، لا تقم بإدخالها مباشرة في الجداول
حل:
// إضافة سطر فارغ إلى الجدول: var row = otable.inserTrow (-1) ؛ var cell = document.createElement ("td") ؛ cell.innerhtml = "" ؛ cell.className = "xxxx" ؛ row.appendchild (Cell) ؛[ملاحظة] يوصى باستخدام مجموعات إطار عمل JS لتشغيل الجداول ، مثل jQuery.
• احصل على عدد الصفوف والأعمدة من الجدول
في IE ، يمكنك استخدام الكود التالي للحصول على عدد الصفوف والأعمدة:
var detailt = grid.getTable ("11") ؛ // احصل على طول الصف var r = detailt.rows.length ؛ // احصل على طول العمود var l = detailt.cells.length ؛والحصول على طول العمود في Firefox أو Google غير صالح.
حل:
var detailt = grid.getTable ("11") ؛ // احصل على طول الصف var r = detailt.rows.length ؛ // احصل على طول العمود var l = detailt.rows [0] .Cells.Length ؛19. مشكلة عرض الكائن ومشكلة تخصيص الارتفاع
وصف المشكلة: البيان المشابه لـ OBJ.Style.Height = IMGOBJ.HEIGHT في Firefox غير صالح.
الحل: استخدم obj.style.height = imgobj.height + 'px' في الزي الرسمي ؛
20. setAttribute ("النمط" ، "اللون: أحمر ؛")
يدعم Firefox (باستثناء أي أن جميع المتصفحات تدعمها الآن) ، أي لا يدعمها
الحل: لا تُتجمى ("النمط" ، "اللون: أحمر")
استخدم object.style.csstext = 'color: red ؛' (هناك استثناءات لهذه الكتابة)
أفضل طريقة هي استخدام جميع الطرق المذكورة أعلاه ، وستكون مضمونة.
21. إعداد اسم الفصل
setAttribute ('class' ، 'styleclass')
يدعم Firefox ، لكن IE لا يدعم (حدد اسم السمة هو فئة ، أي لن يقوم بتعيين سمة فئة العنصر. على العكس
حل:
setAttribute ('class' ، 'styleclass') setAttribute ('className' ، 'StyleClass) أو مباشرة object.classname =' styleclass '؛كل من IE و FF دعم كائن.
22. تعيين الأحداث مع setAttribute
var obj = document.getElementById ('objid') ؛
obj.setattribute ('onClick' ، 'funcitonname () ؛') ؛
يدعم Firefox ، لكن IE لا يدعم
حل:
في IE ، يجب استخدام تدوين DOT للإشارة إلى معالج الأحداث المطلوب ، ويجب تعيين وظائف مجهولة.
على النحو التالي:
var obj = document.getElementById ('objid') ؛ obj.onclick = function () {fucntionname () ؛} ؛هذه الطريقة مدعومة من قبل جميع المتصفحات
23. قم بإنشاء زر راديو
متصفحات غير IE
var rdo = document.createElement ('input') ؛ rdo.setattribute ('type' ، 'radio') ؛ rdo.setAttribute ('name' ، 'radiobtn') ؛ rdo.setAttribute ('value' ، 'checked') ؛أي:
var rdo = document.createElement ("<input name =" radiobtn "type =" radio "value =" checked " />") ؛حل:
هذا الاختلاف يختلف عن السابق. هذه المرة مختلفة تمامًا ، لذلك لا توجد طريقة شائعة لحلها ، لذلك فقط إذا
لحسن الحظ ، يمكن أن يتعرف IE على السمة الفريدة للوثيقة ، والتي لا تستطيع المتصفحات الأخرى التعرف عليها. تم حل المشكلة.
الحل السريع لمشاكل 23 من المشكلات المتعددة التوافق في JavaScript هو المحتوى الكامل الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.