Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2018, 22:17
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 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+
Ответить с цитированием
  #2 (permalink)  
Старый 29.12.2018, 01:00
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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 лет назад. Однако он давно исчерпал свои возможности, и, если вам не нужно поддерживать очень старые браузеры, я лично не вижу необходимости использовать его больше.
Ответить с цитированием
  #3 (permalink)  
Старый 29.12.2018, 03:13
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Интересно от какого релиза считать Current, от второй цифры что-ли? Всегда недоумевал, когда так поддержку указывают, типа мы напишем Current, а вы сами там догадайтесь какой релиз мы имеем в виду и на каких версиях браузеров мы тогда перед выпуском этот релиз тестировали. Или когда пишут, что работает в последних версиях браузеров, тоже как то пугает. Если всё же первая цифра релиза определяет Current, то с учетом того, что она так редко меняется, какой смысл не указывать конкретные версии браузеров? В общем бред какой-то.

Последний раз редактировалось Rise, 29.12.2018 в 03:19.
Ответить с цитированием
  #4 (permalink)  
Старый 29.12.2018, 12:46
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

Malleys, вы читаете мои мысли, Promise - это самое первое существенное отличие в движках, просто я не знала как это записать, поэтому и обратилась за помощью, неудобно было как-то прямым текстом об этом просить. Насчет использования jQuery 3:
1) Нет желания и времени тестировать код во всех браузерах, потому что опасения все равно будут и если их не опровергать, то они могут перерасти в фобию, мне здоровье важней.
2) Код на jQuery все равно лаконичней и быстрее читается, но гдето можно комбинировать, например ajax
3) Лишний код (для работы с анимацией, ajax, разработчики потерли из основного исходника(третья версия), вынесли в отдельный

Rise, ага, тоже бесит

Последний раз редактировалось taksebe, 29.12.2018 в 12:52.
Ответить с цитированием
  #5 (permalink)  
Старый 29.12.2018, 16:33
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 29.12.2018, 20:45
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 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.
Ответить с цитированием
  #7 (permalink)  
Старый 29.12.2018, 22:34
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 31.12.2018, 01:37
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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/)
Ответить с цитированием
  #9 (permalink)  
Старый 31.12.2018, 09:01
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Заглушка для сайта с e-mail формой FladeX Работа 3 08.12.2010 12:40
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Как присвоить текст строке состояния для всех браузеров? Tend Общие вопросы Javascript 4 14.05.2009 16:38