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