Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему такая несовместимость Браузеров на счет JavaScript?
 
 автор: muravey   (27.01.2011 в 19:53)   письмо автору
 
 

Доброго всем времени суток!

Сейчас активно изучаю JavaScript, скажите почему такая несовместимость, что один и тот же код работает по разному в разных браузерах?

И на что нужно больше обращать внимание при написании кода, чтобы эту несовм. минимизировать?

  Ответить  
 
 автор: Абырвалг   (27.01.2011 в 20:53)   письмо автору
 
   для: muravey   (27.01.2011 в 19:53)
 

Видимо, только начали изучать.
Потому неверно выражаете свою мысль.

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'е в разных браузерах я сейчас как-то и не помню...

  Ответить  
 
 автор: sim5   (28.01.2011 в 07:04)   письмо автору
 
   для: Абырвалг   (27.01.2011 в 20:53)
 

IE 9 еще добавил новые методы касающиеся работы с массивами, строками.

  Ответить  
 
 автор: muravey   (30.01.2011 в 11:25)   письмо автору
 
   для: Абырвалг   (27.01.2011 в 20:53)
 

Спасибо, все понял. Учту ваши знания, и рекомендации.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования