Совместимость с jQuery и браузером

#jquery #cross-browser

#javascript #jquery #кроссбраузерный

Вопрос:

Ого! Я много лет являюсь разработчиком и всегда старался делать упор на код, совместимый с как можно большим количеством систем.

Недавно я приобрел книгу jQuery в действии и начал ее читать. Я очень обеспокоен тем фактом, что включенный исходный код, похоже, не работает корректно ни в одном из браузеров на моем текущем компьютере.

В частности, я загрузил исходный код книги и выбрал «Лабораторию jQuery Selectors Lab» для главы 2. Но это выглядит не так, как в книге.

В Google Chrome панели DOM Sample и DOM Sample Code полностью пусты. В IE7 все выглядит намного ближе к тому, как они представлены в книге. Но весь исходный код в области примеров кода DOM находится на одной строке (которая продолжается справа, за пределами страницы). Обратите внимание, что скриншоты в книге сделаны из браузера, работающего на Mac.

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

Комментарии:

1. Одна из основных причин для использования jQuery заключается в том, что он решает за вас множество проблем с кроссбраузерной совместимостью. Конкретный код, над которым вы работаете и который дает сбой в определенных браузерах, имеет больше общего с этим конкретным кодом, чем с фреймворком jQuery.

2. @DA: Да, именно поэтому я интересуюсь jQuery. Тем не менее, авторы чрезвычайно квалифицированы. Если они не могут написать совместимый код с jQuery, какие у меня шансы?

3. jQuery обрабатывает (большинство) проблем браузера. Итак, тот факт, что ваш код не выполняется, на самом деле не имеет ничего общего с самой библиотекой jQuery. Даже MS теперь использует jQuery в asp.net так что я бы не волновался.

Ответ №1:

jQuery активно поддерживается во всех этих браузерах:

  • Firefox 2.0
  • Internet Explorer 6
  • Safari 3
  • Opera 10.6
  • Chrome 8

Существуют известные проблемы с устаревшими браузерами, как указано в приведенном ниже списке:

  • Mozilla Firefox 1.0.x
  • Internet Explorer 1.0-5.x
  • Safari 1.0-2.0.1
  • Opera 1.0-9.x
  • Konqueror

jQuery обычно работает с Konqueror и Firefox 1.0.x, но могут быть некоторые неожиданные ошибки, поскольку мы не тестируем их так регулярно.

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

Комментарии:

1. Поддержка (даже активная) — это не то же самое, что получение согласованных результатов. Для меня важна высокая совместимость по той причине, что я не могу диктовать, какие браузеры будут использовать мои пользователи. Обратите внимание, что в случае Chrome (с наибольшим количеством проблем) я использую самую последнюю версию.

2. Трудно сказать, с какими проблемами вы столкнулись, не опубликовав пример.

3. Я не уверен, что вы имели в виду. Я разместил ссылку на код, который я просматриваю.

4. Я скачал zip-файл и посмотрел на пример, на который вы ссылались. В коде используется get(). Если вы используете Chrome, то это связано с проблемами с разрешениями, указывающими на локальные файлы. Это много раз обсуждалось в stackoverflow. Вы можете решить эту проблему, загрузив свои файлы на рабочий сервер или попытавшись запустить его в Firefox. Ознакомьтесь со следующей ссылкой о том, как устранить проблемы с разрешениями в Chrome при работе с localhost. robspangler.com/blog/jquery-load-doesnt-work-in-chrome

Ответ №2:

Я думаю, что часть вашей проблемы заключается в том, что вы обращаетесь к чему-то из файловой системы, которая предназначена для загрузки с веб-сервера. Например, я вижу эту ошибку в Chome в вашем примере из главы 2:

 XMLHttpRequest cannot load file://...chapter2/dom.sample.html.
Origin null is not allowed by Access-Control-Allow-Origin.
  

Кажется, что в Chrome все работает достаточно хорошо, кроме подобных вещей.

Обычно я ориентируюсь на IE [789], Chrome, Firefox, Safari и Opera, и я не видел много проблем с браузером, специфичных для jQuery или jQuery-UI. Проблемы в основном связаны с проблемами CSS и некоторыми проблемами JavaScript (в IE для обоих), которые не являются проблемами jQuery.

Комментарии:

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

2. Джонатан… вы загружаете страницы с локального веб-сервера или локальной файловой системы? Здесь есть большая разница.

3. @DA: Я почти уверен, что он загружает их из локальной FS, отсюда и AJAX, не работающий в Chrome, и в целом испорченные результаты, которые он видит.

4. @DA: Да, я загружаю их локально.

5. локально… что? Файловая система или сервер? Если вы просто загружаете их из файловой системы, то, как указано, это, скорее всего, проблема.

Ответ №3:

Версия 3 jQuery поддерживается для следующих настольных браузеров :

  • Chrome: (текущий — 1) и текущий
  • Edge: (текущий — 1) и текущий
  • Firefox: (текущий — 1) и текущий
  • Internet Explorer: 9
  • Safari: (текущий — 1) и текущий
  • Opera: Текущая

Он также поддерживается для следующих мобильных браузеров :

  • Стандартный браузер на Android 4.0
  • Safari на iOS 7

Источник : https://jquery.com/browser-support /

Ответ №4:

Я бы не стал чрезмерно беспокоиться о кроссбраузерной совместимости jQuery так сильно, как я бы беспокоился о качестве кода в случае с этой книгой. Я лично не читал эту книгу, поэтому не могу вынести личного суждения; однако я являюсь ведущим разработчиком веб-приложения, которое в настоящее время насчитывает около 15 000 пользователей, и мы уверенно используем jQuery уже пару лет без каких-либо проблем. Мы должны поддерживать клиентов на ряде платформ, использующих все основные браузеры, которые есть на рынке. Когда код jQuery написан правильно и протестирован для всех сред, он может абсолютно корректно работать независимо от того, какой браузер вы используете.

Комментарии:

1. Что ж, я думаю, это обнадеживает. Тем не менее, авторы книги кажутся хорошо подготовленными. Один из них непосредственно участвует в разработке jQuery и связанных с ним плагинов. И the forward — это восторженный обзор, написанный Джоном Ресигом, создателем jQuery. Если они не могут сделать это правильно, как собирается кто-то новичок в jQuery?

Ответ №5:

Похоже, что в примерах кода используется устаревший jQuery версии v1.4. Загрузите последнюю версию и проверьте известные проблемы для получения более подробной информации о кроссбраузерной совместимости.

Ответ №6:

Я не знаю почему, но если я скопирую весь каталог примеров в tomcat / webapps, он работает нормально. Но если я открою страницу (lab.selectors.html ) непосредственно из браузера не отображается раздел dom sample. Сообщение об ошибке из консоли Firefox было таким:

[16:56:36.335] мусор после элемента document @ file:///C:/JavaScript/jqia2/chapter2/dom.sample.html:2