今天在做一个检测可视区域高度与实际文档高度差时,需要去实现获取viewportHeight的实现。
然后就参考了KISSY的dom/offset代码,按照它的写法:
其中:isStrict: isStrict = doc.compatMode === 'CSS1Compat'这个是用来检测当前浏览器是否处于兼容模式下。也就是是否存在<!doctype ...>
如果去掉后面的DOM[VIEWPORT + name](d),会发现在非webkit内核外,其他浏览器的DOM[VIEWPORT+name](d) === d[DOC_ELEMENT][SCROLL + name]
当然,它这种做法是一点都没错的。但是我现在需要获取的当前文档的实际高度,也就是body里的内容高度和整个视图区域的差值。
所以后来改用为:$.browser.webkit ? doc[DOC_ELEMENT][SCROLLH] : doc[BODY][SCROLLH];
这样就OK了~就是这样。
也正是因为这样,所以你用kissy的docWidth时会发现在webkit内核下获得的docWidth还包括左边滚动条的宽度,这样就使得在使用遮盖层遮盖整个页面的时候,在x轴上会出现滚动条。