#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