Типичные ошибки кроссбраузерной совместимости [закрыты]

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

Вопрос

Каковы наиболее распространенные проблемы с совместимостью браузеров в основных настольных браузерах?

Никаких дублей, пожалуйста.Проголосуйте за проблемы, с которыми вы столкнулись.Я надеюсь, что список будет отсортирован самостоятельно."IE sux" - это не ловушка, а призыв к голосованию против.

[Редактировать] Да, я знаю, что это опрос - я публикую ответы здесь не для того, чтобы набрать очки - на самом деле мне интересно знать, с чем обычно сталкиваются люди.

Это было полезно?

Решение

Причудливый режим содержит исчерпывающий список множества отличий, требующих внимания !-)

-- но он, как и большинство других сайтов и блоггеров в сети, по-своему сосредоточен, и это приводит к некоторым незначительным или крупным ошибкам и несоответствиям...

Другие советы

Прозрачные PNG-файлы в Internet Explorer 6, особенно потому, что обычный обходной путь без использования JavaScript с использованием AlphaImageLoader может иметь побочный эффект блокировка IE6.

CSS - в значительной степени разобрался в современных браузерах, но все еще остается проблемой - особенно в том, что касается верстки.

Обратите внимание, что это не критично, но это проблема совместимости, к которой я почти всегда возвращаюсь при разработке сайта.

кэширование и хэши предыдущих страниц.

Управление памятью может быть проблемой - разные сборщики мусора перегружают разные типы циклических ссылок, хотя firefox довольно хорошо справляется с правильной очисткой сложных объектов.

Я обнаружил, что IE 6 имеет довольно небольшие ограничения на допустимую глубину стека.

В какой-то момент я использовал приятную рекурсивную функцию, чтобы получить положение элемента в документе:

function getOffsetTop (element) {
    var offset = 0;

    if (element.offsetTop)
        offset = offset + element.offsetTop;

    if (element.offsetParent)
        offset = offset + getOffsetTop(element.offsetParent);   

    return offset;
}

К сожалению, при вызове этого метода для элементов в очень глубокой иерархии узлов IE жалуется на превышение максимального размера стека (я забыл точное сообщение об ошибке).Чтобы обойти это, мне нужно было использовать итеративный подход, чтобы сохранить размер стека небольшим:

function getOffsetTop (element) {
    var offset = 0;

    if (element.offsetTop)
        offset = offset + element.offsetTop;

    var parent = element.offsetParent;
    while (parent) {
        if (parent.offsetTop)
            offset = offset + parent.offsetTop;
        parent = parent.offsetParent;
    }

    return offset;
}

Плавает.В IE6 / 7 существует бесконечное количество ошибок с плавающей точкой - Пикабо, гильотина, двойное поле, убегающие поплавки, разрыв в 3 пикселя, повторяющиеся символы, устранен ряд ошибок, связанных с доступным пространством...

Самая распространенная ошибка, о которой я могу вспомнить - и она была проблемой для меня дважды только на этой неделе - это ошибка IE6 и коробочной модели.Посмотри это!

В частности, проблема, о которой я думаю, заключается в том, что у вас есть плавающие DIVS, которые разработчик думает все они помещаются в DIV-оболочку, но не в IE6, потому что они немного больше.

Таким образом, вместо трех столбцов вы получаете два, а третий находится где-то внизу экрана - вы хотите:

   +-------------------------------+
   |+------+ +-----------+ +------+|
   ||      | |           | |      ||
   || foo  | |   bar     | | baz  ||
   ||      | |           | |      ||
   ||      | |           | |      ||
   |+------+ +-----------+ +------+|
   +-------------------------------+

но вы получаете:

   +-------------------------------+
   |+--------+ +------------+      |
   ||        | |            |      |
   ||  foo   | |    bar     |      |
   ||        | |            |      |
   ||        | |            |      |
   |+--------+ +------------+      |
   |+------+                       |
   ||      |                       |
   ||      |                       |
   || baz  |                       |
   ||      |                       |
   ||      |                       |
   |+------+                       |
   +-------------------------------+

При выполнении XMLHttpRequest и функции onreadystatechange свойство XMLHttpRequest.responseText содержит данные, загруженные в этот момент в Firefox, но не в IE (и, возможно, Safari).

Это предотвращает захват частичных данных в этих браузерах для использования при отображении индикатора выполнения.

Каждый сайт фиксированной ширины с центром, который я создал, т.е.использование 'margin: 0 auto' для некоторого содержащего div для центрирования всего - не работает в IE6, пока я не протестирую его и не применю "взлом".Это заводит меня каждый раз.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top