Вход

Просмотр полной версии : Заглушка-light для старых браузеров


taksebe
28.12.2018, 22:17
Приветствую!
Приняла решение использовать для своих целей 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.';
}
Версии браузеров, которые поддерживают свойство (https://developer.mozilla.org/ru/docs/Web/API/Geolocation/Using_geolocation#%D0%9A%D1%80%D0%BE%D1%81%D1%81%D 0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BD%D0% BE%D1%81%D1%82%D1%8C)
В 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
Зачем тогда переменная Current, товарищи?!
(Current - 1) и Current означает, что мы поддерживаем текущую стабильную версию браузера, а также версию, предшествующую ей. Например, сегодня стабильная версия браузера Chrome – 71.0, это значит, что jQuery поддерживается в 71 и 70 версиях браузера. Хотя jQuery может без проблем работать и в более старых версиях брузеров... разработчики jQuery в основном не исправляют ошибки, которые могут возникнуть там. (https://jquery.com/browser-support/)