28.12.2018, 22:17
|
Новичок на форуме
|
|
Регистрация: 23.11.2018
Сообщений: 9
|
|
Заглушка-light для старых браузеров
Приветствую!
Приняла решение использовать для своих целей jQuery v3.3.1, в той версии jQuery, которая поддерживает старые браузеры слишком много костылей, которые нет ни желания, ни острой необходимости постоянно таскать с собой. Создала такую заглушку при загрузке сайта для старых браузеров:
try {
if ('geolocation' in navigator == false) throw e;
} catch(e) {
document.getElementById('loading').innerHTML = '<p>The load is canceled.<br>This software needs a modern web browser.';
}
Версии браузеров, которые поддерживают свойство
В IE работает, для других браузеров не было возможности протестировать. Возможно есть более подходящее для данной цели свойство?
Browser Support (jQuery v3.3.1)
Current Active Support
Desktop
Chrome: (Current - 1) and Current
Edge: (Current - 1) and Current
Firefox: (Current - 1) and Current, ESR
Internet Explorer: 9+
Safari: (Current - 1) and Current
Opera: Current
Mobile
Stock browser on Android 4.0+
Safari on iOS 7+
|
|
29.12.2018, 01:00
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Если вам нужна проверка наличия Geolocation API, то приведённый вами способ подходит как раз.
В последнем издании ECMAScript был добавлен новый метод Promise.prototype.finally. Отсутствие данного метода указывает на использование старого движка JS.
try {
if ("finally" in Promise.prototype === false) throw e;
} catch(e) {
document.getElementById('loading').innerHTML = '<p>The load is canceled.<br>This software needs a modern web browser.';
}
Но более правильный способ — проверять именно то, что вы хотите использовать!
Я всегда буду благодарен за то, что дал нам jQuery 13 лет назад. Однако он давно исчерпал свои возможности, и, если вам не нужно поддерживать очень старые браузеры, я лично не вижу необходимости использовать его больше.
|
|
29.12.2018, 03:13
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Интересно от какого релиза считать Current, от второй цифры что-ли? Всегда недоумевал, когда так поддержку указывают, типа мы напишем Current, а вы сами там догадайтесь какой релиз мы имеем в виду и на каких версиях браузеров мы тогда перед выпуском этот релиз тестировали. Или когда пишут, что работает в последних версиях браузеров, тоже как то пугает. Если всё же первая цифра релиза определяет Current, то с учетом того, что она так редко меняется, какой смысл не указывать конкретные версии браузеров? В общем бред какой-то.
Последний раз редактировалось Rise, 29.12.2018 в 03:19.
|
|
29.12.2018, 12:46
|
Новичок на форуме
|
|
Регистрация: 23.11.2018
Сообщений: 9
|
|
Malleys, вы читаете мои мысли, Promise - это самое первое существенное отличие в движках, просто я не знала как это записать, поэтому и обратилась за помощью, неудобно было как-то прямым текстом об этом просить. Насчет использования jQuery 3:
1) Нет желания и времени тестировать код во всех браузерах, потому что опасения все равно будут и если их не опровергать, то они могут перерасти в фобию, мне здоровье важней.
2) Код на jQuery все равно лаконичней и быстрее читается, но гдето можно комбинировать, например ajax
3) Лишний код (для работы с анимацией, ajax, разработчики потерли из основного исходника(третья версия), вынесли в отдельный
Rise, ага, тоже бесит
Последний раз редактировалось taksebe, 29.12.2018 в 12:52.
|
|
29.12.2018, 16:33
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Ну вот, из википедии (заметьте не из офсайта), где написано jQuery 3.0 & newer supports "current−1 versions", я понял, что Current считается по первой цифре релиза. Допустим. Теперь ищем дату релиза 3.0.0, находим, это 9 июня 2016, т.е. это 2,5 года назад, Карл! Зачем тогда переменная Current, товарищи?! Идем далее. Возьмем, например, Firefox на ту дату и посчитаем, значит current это у нас 47.0 (7 июня 2016), а current−1 очевидно 46.0 (26 апреля 2016). Так! Теперь, внимание, вопрос, а версия 45.0 (8 марта 2016), вышедшая, как мы видим, 1,5 месяцами ранее от 46.0, что уже не поддерживается?! Не думаю! Так какого хрена так писать поддержку? Это называется не поддержка, а это мы потестили только на двух версиях браузеров, последних на тот момент, а вы там сами в будущем, будьте любезны, ищите всякие даты и версии релизов библиотеки и браузеров и сопоставляйте, а нам просто было влом определить минимальную поддерживаемую версию браузера для нашей библиотеки, да мы и сами не знаем... Это было бы актуально, если бы они основную версию меняли каждый месяц, а когда годами не меняется, то какой смысл, может я неправильно понимаю их логику, кто-нибудь понимает иначе?
PS: такое ощущение, что разработчики jQuery, когда выпускали 3.0, впали в беспамятство, и не смогли осознать существование цифр версий у браузеров, кроме IE, iOS и Android.
Последний раз редактировалось Rise, 29.12.2018 в 16:57.
|
|
29.12.2018, 20:45
|
Новичок на форуме
|
|
Регистрация: 23.11.2018
Сообщений: 9
|
|
Вот так в итоге сделала, потому что начальный вариант и в огнефоксе выбрасывает ошибку
try {
if (!window.Promise) throw e;
} catch(e) {
document.getElementById('loading').innerHTML = '<p>The load is canceled.<br>This software needs a modern web browser.';
}
Rise, думаю потому и бесплатно все, что нет нормальной документации
Последний раз редактировалось taksebe, 29.12.2018 в 20:50.
|
|
29.12.2018, 22:34
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Вот еще, нашел на форуме jQuery, чувак задал правильные вопросы. Кто-нибудь понял что там ответили? Я честно говоря не очень, что-то про АД!) Опять вода какая-то, снова всех собак на старые IE повесили, ну давайте тогда в поддержке только про IE и пишите, зачем другие браузеры указываете с каким-то неопределенным Current, если они не при чем. Первый раз такую тупость от jQuery встречаю, видимо совсем дела плохи у них.
PS: нашел подтверждение на офсайте про первую цифру: jQuery team policy is to only change browser support on major-version updates, so this list will apply until at least jQuery 4 arrives. Капец квест.
Последний раз редактировалось Rise, 29.12.2018 в 22:57.
|
|
31.12.2018, 01:37
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от Rise
|
Зачем тогда переменная Current, товарищи?!
|
Сообщение от jquery.com/browser-support
|
(Current - 1) и Current означает, что мы поддерживаем текущую стабильную версию браузера, а также версию, предшествующую ей.
|
Например, сегодня стабильная версия браузера Chrome – 71.0, это значит, что jQuery поддерживается в 71 и 70 версиях браузера. Хотя jQuery может без проблем работать и в более старых версиях брузеров... разработчики jQuery в основном не исправляют ошибки, которые могут возникнуть там. ( https://jquery.com/browser-support/)
|
|
31.12.2018, 09:01
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Сообщение от Malleys
|
Например, сегодня стабильная версия браузера Chrome – 71.0, это значит, что jQuery поддерживается в 71 и 70 версиях браузера.
|
Но последний релиз jQuery это январь 2018, а релиз Chrome 71 это декабрь 2018, как они могут гарантировать поддержку того чего еще нет? А Chrome 69 от сентября 2018 уже старый что-ли будут проблемы?
Сообщение от forum.jquery.com/topic/jquery-3-0-chrome-edge-firefox-safari-desktop-version-compatibility
|
Current means currently out there.
|
А это тогда как переводится может я неправильно понял?
Последний раз редактировалось Rise, 31.12.2018 в 09:08.
|
|
|
|