| Видимо, только начали изучать.
Потому неверно выражаете свою мысль.
Javascript - он практически везде (во всех браузерах) одинаков.
Ибо Javascript - это всего лишь математический аппарат для обработки переменных и массивов - которыми могут быть объекты (окно, документ, теги от <A> и до <XMP>), их атрибуты (свойства), какие-то коллекции объектов. Всякие-разные события и методы (разные в разных браузерах) - это вовсе не Javascript.
Всё это (выделенное выше жирно) вместе составляет DOM браузера (динамическую объектную модель).
Главная проблема несовместимости - это различия в самих браузерах, в их динамических моделях.
Которые появились потому, что WEB - это было дело новое, никаких стандартов поначалу не было. Разные браузеры начались разрабатываться разными людьми в разных компаниях.
Каждый выдумывал свои теги, награждал их какими-то своими атрибутами(свойствами), устанавливал этим атрибутам (свойствам) какие-то свои начальные значения. Аналогично и с событиями, коллекциями и методами.
Сегодня появились стандарты как на HTML, так и на CSS, и на DOM.
Но разработчики браузеров вынуждены решать проблему совместимости новых своих версий браузеров с теми же браузерами, но старых версий. Поэтому нестандартные теги, свойства, события, коллекции и методы так в них и остаются. И с некоторыми стандартными вступают в противоречие.
Ну а начальные значения даже стандартных свойств никакими стандартами не предусмотрены. Никто не мешает, например, разработчикам MS Explorer дать отступ окна браузера в 15 пикселей, а у какого-то другого браузера это будет 20 пикселей.
Такое положение, по-видимому, так и будет сохраняться и в дальнейшем.
WEB развивается, разрабатываются новые стандарты, разработчики новых версий браузеров стремятся не опоздать и "засовывают" в новые версии браузеров ещё сырые и не утверждённые положения разрабатываемых стандартов... причём в каждый из браузеров засовывают только то новое, что считают важным. И опять же делают так, чтобы это новое не вступало в конфликты со старым (пусть уже давно и нестандартным).
Революционного шага (взять всё и сделать заново и одинаково) - никогда не будет.
Это как, например, с русификацией клавиатуры. Какой-то идиот, который первым клавиатуру русифицировал, взял и сделал запятую "с шифтом". А запятая употребляется чаще, чем точка. Надо бы поменять.. Но как? Миллионы людей имеют миллионы клавиатур... они плюются, ругаются, но они как бы и привыкли уже к этому. Кто оплатит замену этих миллионов клавиатур и переобучение всех этих миллионов людей?
Или как с телевидением. Давно разработана новая система особо чёткого телевидения (не PAL, не SECAM и не NTSC). Система эта лучше показывает, дешевле в производстве... Но как её внедрить? Для этого нужно по эфиру и по кабелю пускать новую кодировку телесигнала. Кто заменит людям их сотни миллионов (если не миллиарды) телевизоров на новые? :-)
-----
По поводу "как минимизировать" ответ - НИКАК!
Ставите на компе несколько самых популярных браузеров каких-то версий (какие именно сейчас популярны - узнаёте на любом сайте интернет-статистики). Делаете сначала вёрстку. Пошагово. Каждый шаг проверяете во всех этих браузерах. Пытаетесь добиться одинаковости отображения. От чего-то приходится отказываться. Что-то приходится добавлять. Затем опять же пошагово создаёте скриптовой код. И снова проверяете эффект его работы в разных браузерах. Если где-то что-то "не идёт", ползёте на сайт разработчика и пытаетесь выяснить - что там конкретный разработчик придумал для этого случая. Если выяснили - "подгоняете" свой код. Если не смогли узнать - отказываетесь от этого подхода, ищете другой путь...
Вот так вот...
И, по-любому, сделанная Вами страница вполне может и не будет работать даже в этих же браузерах, для которых Вы разрабатывали, если у пользователя чуть иная (более старая или более новая версия его). И совсем нет никакой гарантии, что в каком-то экзотическом браузере (которым, может, пользуются десятки тысяч во всём мире) Ваш код будет работать.
Такие дела.
А никто и не обещал, что это будет легко :-)
-----
А Javascript, повторяю, - он практически везде (во всех браузерах) одинаков.
Разница есть, но она минимальна - в последних версиях MS JScript (для браузера MS Explorer) есть, например, метод splice (), аналогичный PHP-методу с тем же названием - для отсечения начальной/конечной части строки (или нескольких элементов массива с начала или с конца), а все прочие браузеры этот метод в своих версиях Javascript'а не используют. У них есть только метод pop () (по одному элементу, только с конца, и только для массивов). Вывод - для кроссбраузерности не использовать метод splice () вовсе (хотя он и очень удобен).
Чего-то другого принципиально отличающегося в Javascript'е в разных браузерах я сейчас как-то и не помню... | |