仅当我在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
}
答案 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
}
});