“ Windows和Safari功能”出现问题

时间:2019-06-24 11:27:34

标签: javascript windows safari

仅当我在Windows上的Safari中时,我才想运行一些js代码。 “警报”有效,但其他任何代码(例如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 个答案:

答案 0 :(得分:1)

您的问题是您的JavaScript触发时document尚未准备就绪,因此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
  }
});