Проблема с этой "функцией Windows и Safari" - PullRequest
0 голосов
/ 24 июня 2019

Я хотел бы запустить код js, только если я в Safari на Windows.«Предупреждение» работает, но любой другой код (например, body.classList ... и т. Д.) Не работает.Зачем?Большое спасибо за любую помощь

var safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
var windows = (navigator.userAgent.indexOf("Win")!=-1);
var body = document.body;

if (safari && windows) {
  alert('this is safari on windows'); //This works
  body.classList.add("safwin"); //This not works
}

1 Ответ

1 голос
/ 24 июня 2019

Ваша проблема в том, что document еще не готов, когда ваш javascript сработает, и поэтому document.body даст вам null.Чтобы получить доступ к document, вам необходимо выполнить код, когда загружена объектная модель документа (DOM).Вы можете сделать это, добавив прослушиватель событий в ваш window, так что вы запускаете свой код, когда DOM загружен (используя "DOMContentLoaded"):

window.addEventListener('DOMContentLoaded', function() {  
  var safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
  var windows = (navigator.userAgent.indexOf("Win")!=-1);
  var body = document.body; // you can now safely access document.body

  if (safari && windows) {
    alert('this is safari on windows'); // This works
    body.classList.add("safwin"); // This will now work
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...