(Я бы хотел, чтобы это была окончательная вики сообщества. Я выложил ее из своего собственного ответа на этот вопрос.)
Указать все
Множество проблем с несколькими браузерами сводится к следующему: вы не указали что-то, и разные браузеры делают разные предположения. Поэтому:
Объявить действительный doctype
Ваш doctype сообщает браузеру, какие правила вы будете использовать в своем коде. Если вы не укажете, браузер должен угадать, и разные браузеры будут угадывать иначе.
По моему опыту, "строгий" тип doctich делает поведение IE лучше (включает такие вещи, как CSS: селектор hover на div в IE7).
Эта статья дает хорошее представление о доктринах.
Использовать веб-стандарты
Избегайте разметки, зависящей от браузера, или используйте ее только тогда, когда ее сбой в других браузерах не будет значительным для работы сайта.
Подтвердите свой HTML и CSS
Вам не нужно все совершенствовать, но валидация - хорошая обратная связь. Как Джефф сказал:
Знание правил и границ помогает определить, что вы делаете, и дает вам законные боеприпасы для согласования или несогласия. Вы можете сделать осознанный выбор, вместо случайного "Я просто делаю это, и он работает".
Представьте, что вы открыли тег абзаца и никогда не закрывали его. Если затем открыть тег списка, вы имели в виду, что он находится внутри абзаца или нет? Проверка поможет вам поймать это, закрыть тег и устранить двусмысленность.
Рассмотрим CSS Reset
Различные браузеры предполагают различные базовые правила CSS. Вы можете помочь им действовать одинаково, явно скрывая различия. Эрик Мейер, который написал CSS: The Definitive Guide, использует this Reset. Другой популярный выбор - YUI Reset CSS.
Использовать Javascript-библиотеку для взаимодействия с DOM
Всякий раз, когда ваш Javascript должен работать с элементами на вашей странице, лучше всего использовать библиотеку, такую как jQuery, Prototype или MooTools. Эти библиотеки используются многими тысячами разработчиков, и они берут большинство несоответствий между интерпретацией браузерами Javascript, общаются с ними внутри и дают вам последовательный набор команд, которые просто работают. Попытка найти и обойти все эти несоответствия - это пустая трата времени и, вероятно, создание ошибок.
Тест в нескольких браузерах, обратитесь к IE последнему
Протестируйте в нескольких браузерах, когда вы идете. Как правило, вы обнаружите, что браузеры, отличные от IE, ведут себя аналогично, а IE - особый случай - особенно если вы следуете приведенному выше совету. При необходимости вы можете добавить IE-хаки в отдельную таблицу стилей и загружать ее только для пользователей IE.
Quirksmode.com - хорошее место для поиска случайных различий браузера.
Browsershots.org может помочь показать, как ваша страница будет отображаться в ассортименте браузеров и операционных систем.
Отказоустойчивость
Ни один сайт не будет выглядеть идеально в каждом браузере, который существует. Если у пользователя нет Flash, или Javascript, или расширенный CSS и т.д., Вы хотите, чтобы ваш сайт использовался в любом случае. С учетом этого:
Проверьте пустой HTML
Попробуйте загрузить свой сайт с помощью простого HTML - без стилей, без скриптов. Доступны ли опции меню? Предоставляет ли первичный контент вторичному контенту? Является ли сайт пригодным для использования, даже если он уродлив?
Рассмотрите прогрессивное улучшение, основанное на тестах
Описанный в в этой статье, этот метод использует javascript, чтобы проверить, обладает ли браузер определенной способностью, такой как поддержка данного свойства CSS, прежде чем использовать его на странице. Это не похоже на обнюхивание браузера, поскольку оно проверяет функции, а не конкретный браузер.