Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Заглушка-light для старых браузеров (https://javascript.ru/forum/misc/76321-zaglushka-light-dlya-starykh-brauzerov.html)

taksebe 28.12.2018 22:17

Заглушка-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+

Malleys 29.12.2018 01:00

Если вам нужна проверка наличия 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 лет назад. Однако он давно исчерпал свои возможности, и, если вам не нужно поддерживать очень старые браузеры, я лично не вижу необходимости использовать его больше.

taksebe 29.12.2018 12:46

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

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

taksebe 29.12.2018 20:45

Вот так в итоге сделала, потому что начальный вариант и в огнефоксе выбрасывает ошибку
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, думаю потому и бесплатно все, что нет нормальной документации

Malleys 31.12.2018 01:37

Цитата:

Сообщение от Rise
Зачем тогда переменная Current, товарищи?!

Цитата:

Сообщение от jquery.com/browser-support
(Current - 1) и Current означает, что мы поддерживаем текущую стабильную версию браузера, а также версию, предшествующую ей.

Например, сегодня стабильная версия браузера Chrome – 71.0, это значит, что jQuery поддерживается в 71 и 70 версиях браузера. Хотя jQuery может без проблем работать и в более старых версиях брузеров... разработчики jQuery в основном не исправляют ошибки, которые могут возникнуть там. (https://jquery.com/browser-support/)


Часовой пояс GMT +3, время: 09:14.