jQuery mobile: корректно ухудшается в неподдерживаемых браузерах?

#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 может не поддерживаться, но все основные функции, такие как обнаружение браузера, события, селекторы, должны работать!