我很好奇放置这些
的安全性var w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
他们必须进入window.onload = function(){};
才能被信任吗?
答案 0 :(得分:2)
根据http://www.w3.org/TR/cssom-view/#dom-window-innerwidth,window.innerWidth
不依赖于网页内容或布局,而是取决于viewport尺寸。
答案 1 :(得分:0)
你有两个问题。标题中问题的答案是是,window.innerWidth
在window.onload
之前是安全的。
但是,您的描述中的问题是,发布的代码是否完全安全不一定相同。
例如,假设您的文档头部中包含该代码段,并且您的浏览器宽度为0.在这种情况下,您提供的代码将最终评估所有三个属性并且一次它会尝试评估document.body.clientWidth
您会得到一个 TypeError 来破坏您的脚本执行,因为此时您的文档中没有document.body
。
确实是一个小/边缘的案例,但在发布的代码中并不总是安全。