此"Windows and Safari function"的问题



我想只在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
}

你的问题是当你的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
  }
});

相关内容

最新更新