Как проверить, находится ли пользователь в pwa или браузере

#javascript #progressive-web-apps

#javascript #progressive-веб-приложения

Вопрос:

Мне нужно скрыть элемент, когда пользователь находится в pwa. Я пробовал, как,

manifest.json

"start_url": "/?mode=standalone"

js

 const url = new URL(window.location.href);
  if(url.searchParams.get('mode')==='standalone') {
    document.getElementsByClassName("pwa").style.display="none";
  }
 

HTML

<p class="pwa">Some text</p>

Я не получаю никаких ошибок в консоли. и я не могу скрыть элемент в pwa. Как это сделать?

Ответ №1:

вы можете проверить в JavaScript с помощью:

 if (window.matchMedia('(display-mode: standalone)').matches) {
  console.log("This is running as standalone.");
}
 

Ответ №2:

document.getElementsByClassName("pwa") возвращает a HTMLCollection . Вы должны выполнить итерацию элементов pwa:

 Array.from(
    document.getElementsByClassName("pwa")
).forEach((e)=>e.style.display='none')
 

Комментарии:

1. Это работает, но мне нужно заменить if(url.searchParams.get('mode')==='standalone') на if(navigator.standalone || window.matchMedia('(display-mode: standalone)').matches)