#jquery #jquery-mobile #browser-support
#jquery #jquery-mobile #браузер-поддержка
Вопрос:
Я разрабатываю сайт на jQuery mobile (jQM). Это здорово, но меня беспокоит одна вещь.
jQM поддерживается не во всех мобильных браузерах (в частности, BlackBerry 5). Сайт выглядит великолепно в браузере Android: в Opera Mini на Android он фактически сломан : (
Естественно, я разработал сайт с использованием прогрессивного улучшения. Итак, он работает без jQM — если я могу сказать браузеру не использовать его!
Вопрос: для платформ, подобных Opera Mini на Android, есть ли способ проверить поддержку jQM и полностью отключить jQM при необходимости?
- Если jQM поддерживается в этом браузере, используйте его.
- Если это не так, не загружайте jQM javascript, не загружайте таблицы стилей jQM и используйте базовый сайт JavaScript.
Я знаю об gradeA()
свойстве, но вам, вероятно, придется загрузить jQM, чтобы использовать его:
$.mobile.gradeA()
Спасибо!
Ответ №1:
jQuery Mobile тестирует функции браузера самостоятельно.
Вы должны настроить код так, чтобы он отказался от выполнения своих улучшений. Попробуйте здесь, если вам интересно: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.support.js
Также: если он решит работать — вероятно, так и должно быть. Попробуйте устранить проблемы вместо того, чтобы пытаться заставить jQuery Mobile деградировать
[править]
ОК. позвольте мне объяснить. JQM, следуя идее прогрессивного улучшения, тестирует возможности браузера и запускает свои виджеты и прочее, когда браузер проходит тесты. Вот почему я говорю, что это должно сработать, если оно попытается.
Если он пытается улучшить и терпит неудачу — это ошибка / отсутствие поддержки на стороне JQM, и в идеальном мире вы должны ожидать, что это будет исправлено. Реальность подсказывает, что вы не можете этого ожидать, но вы можете надеяться на это 😉 Это еще не релиз.
Что я улучшаю с помощью «Попробуйте исправить …», так это то, что вы должны загрузить репозиторий JQM, добавить одну или две строки в тесты поддержки и заставить их обнаруживать функцию, которая вызывает сбой JQM в этом конкретном случае. Затем запустите make
, и у вас заработает совершенно новый JMQ.
После этого вы можете предложить свои изменения основной команде, и они улучшат их.
[править]
На самом деле это то, чего вы действительно хотели:
Хороший способ получить поддержку — прослушивание кода.
Вы можете реализовать свою собственную gradeA
функцию, которая возвращала бы $.support.mediaqueryamp;amp;yourcondition
Смотрите: http://jquerymobile.com/demos/1.0a4.1/#docs/api/globalconfig.html
Это может помешать JQM работать с браузерами, которые вам не нужны.
Комментарии:
1. «Если он решит работать — вероятно, так и должно быть» <— не уверен, что вы имеете в виду под этим?
2. Меня интересует этот ответ, но, боюсь, я не могу понять, что вы имеете в виду. Это не проблема с моим кодом как таковым — сами демо-версии jQuery Mobile не работают, например, в Opera Mini 6 на Android.
Ответ №2:
Как насчет использования объекта jquery support? Для мобильных устройств появились новые свойства. Из docs, gradeA
это ярлык для $.support.mediaquery
.
Комментарии:
1. Ах, значит, сначала загрузите jQuery, а затем используйте
.gradeA
для условной загрузки jQM? Хитрость! Это предполагает, что все браузеры поддерживают jQuery…2. @simon, да, это то, что я предлагаю. Я полагаю, что jquery будет поддерживаться в современных мобильных браузерах, поддерживающих java-script. Да, возможно, что какая-то часть jquery API может не поддерживаться, но все основные функции, такие как обнаружение браузера, события, селекторы, должны работать!