Каковы типичные причины JavaScript, разработанный на сбоях Firefox на IE? [закрытый]

108
задан BomberMan 31 December 2014 в 10:04
поделиться

17 ответов

Не стесняйтесь обновлять этот список, если вы видите какие-либо ошибки / упущения и т. Д.

Примечание: IE9 исправляет многие из следующих проблем, поэтому многое из этого относится только к IE8 и ниже, а также к некоторым экстент IE9 в режиме причуд. Например, IE9 изначально поддерживает SVG, , и , однако вы должны включить режим соответствия стандартам , чтобы они были доступны.


Общие:

  • Проблемы с частично загруженными документами: Рекомендуется добавить свой JavaScript в window.onload или подобное событие, поскольку IE не поддерживает многие операции в частично загруженных документы.

  • Различные атрибуты : в CSS это elm.style.styleFloat в IE по сравнению с elm.style.cssFloat в Firefox. В тегах доступ к атрибуту for осуществляется с помощью elm.htmlFor в IE по сравнению с elm.for в Firefox. Обратите внимание, что для зарезервировано в IE, поэтому elm ['for'] , вероятно, является лучшей идеей, чтобы запретить IE создавать исключение.


Базовый язык JavaScript:

  • Символы доступа в строках : 'строка' [0] не поддерживается в IE, как и в исходных спецификациях JavaScript. Используйте 'string'.charAt (0) или ' string'.split ('') [0] , учитывая, что доступ к элементам в массивах значительно быстрее, чем при использовании charAt со строками в IE (хотя есть некоторые начальные накладные расходы при первом вызове split .)

  • Запятые перед концом объектов: например. {'foo': 'bar',} нельзя использовать в IE.


Проблемы, связанные с элементами:

  • Получение документа IFrame :

    • Firefox и IE8 +: IFrame.contentDocument (IE начал поддерживать это ] из версии 8 .)
    • IE: IFrame.contentWindow.document
    • ( IFrame.contentWindow относится к окну в обоих браузерах.)

  • Canvas: Версии IE до IE9 не поддерживают элемент . IE поддерживает VML , который, однако, является аналогичной технологией, а explorercanvas может предоставить локальную оболочку для элементов для многих операций. Имейте в виду, что IE8 в режиме соответствия стандартам работает во много раз медленнее и имеет гораздо больше сбоев, чем в режиме совместимости при использовании VML.

  • SVG: IE9 изначально поддерживает SVG. IE6-8 может поддерживать SVG, но только с внешними плагинами , и только некоторые из этих плагинов поддерживают манипуляции с JavaScript.

  • и : поддерживаются только в IE9.

  • Динамическое создание переключателей: IE <8 содержит ошибку, из-за которой переключатели, созданные с помощью document.createElement , не устанавливаются. См. Также Как динамически создать переключатель в Javascript, который работает во всех браузерах? , чтобы узнать, как это обойти.

  • Встроенный JavaScript в тегах и onbeforeunload конфликтует в IE: Если есть встроенный JavaScript в части href ] тег (например, , то IE всегда будет показывать сообщение, возвращенное из перед загрузкой , если только не onbeforeunload предварительно удаляется. См. также Запрашивать подтверждение при закрытии вкладки .