在window.onload之前window.innerWidth是否安全?

时间:2014-05-02 20:35:03

标签: javascript

我很好奇放置这些

的安全性
var w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

他们必须进入window.onload = function(){};才能被信任吗?

2 个答案:

答案 0 :(得分:2)

根据http://www.w3.org/TR/cssom-view/#dom-window-innerwidthwindow.innerWidth不依赖于网页内容或布局,而是取决于viewport尺寸。

答案 1 :(得分:0)

你有两个问题。标题中问题的答案是是,window.innerWidthwindow.onload 之前是安全的。

但是,您的描述中的问题是,发布的代码是否完全安全不一定相同

例如,假设您的文档头部中包含该代码段,并且您的浏览器宽度为0.在这种情况下,您提供的代码将最终评估所有三个属性并且一次它会尝试评估document.body.clientWidth您会得到一个 TypeError 来破坏您的脚本执行,因为此时您的文档中没有document.body

确实是一个小/边缘的案例,但在发布的代码中并不总是安全