JavaScript window.navigator — інформація про браузер
Об'єкт navigator описує браузер і пристрій: мову, стан мережі, доступ до буфера обміну, геолокацію.
Загальний опис
Історично з нього читали userAgent — рядок із назвою браузера — і будували на цьому логіку. Сьогодні це вважається антипаттерном: рядок можна підмінити, він переповнений брехнею заради сумісності, а нових браузерів у ньому не передбачиш.
Правильний шлях — перевіряти саму можливість, а не ім'я браузера: if ('share' in navigator).
Зате в ньому живуть по-справжньому корисні речі: navigator.clipboard (робота з буфером обміну), navigator.share (нативне вікно «Поділитись» на мобільних), navigator.onLine (чи є мережа), navigator.language (мова інтерфейсу користувача).
- Порада
-
Замість «який це браузер?» питай «чи вміє він те, що мені треба?». Перевірка можливості не застаріє, а список назв браузерів застаріє завтра.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| navigator | 1+ | 1+ | 1+ | 3+ | 12+ | 5+ |
| Переглядач | ||||
|---|---|---|---|---|
| navigator | yes | yes | yes | yes |
Приклади
+ запропонувати свій приклад у пісочниці
Копіювання в буфер, «Поділитись» і мова користувача.
HTML
<button id="copy">Скопіювати</button>
JS
// top-level await працює лише в модулях — тут той самий код в async-функції
(async () => {
console.log(navigator.language); // 'uk' або 'uk-UA'
console.log(navigator.onLine); // false, якщо мережі немає
// копіювання в буфер
document.getElementById('copy').addEventListener('click', async () => {
await navigator.clipboard.writeText(location.href);
console.log('Скопійовано');
});
// перевіряємо МОЖЛИВІСТЬ, а не назву браузера
if ('share' in navigator) {
await navigator.share({ title: 'Довідник', url: location.href });
}
})();
Коментарі
Коментарів ще немає — будьте першим!