可能有很多朋友和我有同样经历,一个网页中的正常的、“完美”的JS代码,放到另一个网页中就变得不那么完美了。这问题很奇怪,最后找到原因,是因为一个网页有标准声明,另一个没有。
document.compatMode,可以用来判断当前页面采用的渲染方式。下面官方文档的说明:
BackCompat:标准兼容模式关闭。
CSS1Compat:标准兼容模式开启。
当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth;
当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。
浏览器客户区高度、滚动条高度、滚动条的Left、滚动条的Top等等都是上面的情况。
经我研究和多次测试后,写了个准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top的代码:
if (document.compatMode == "BackCompat") {
cWidth = document.body.clientWidth;
cHeight = document.body.clientHeight;
sWidth = document.body.scrollWidth;
sHeight = document.body.scrollHeight;
sLeft = document.body.scrollLeft;
sTop = document.body.scrollTop;
}
else { //document.compatMode == "CSS1Compat"
cWidth = document.documentElement.clientWidth;
cHeight = document.documentElement.clientHeight;
sWidth = document.documentElement.scrollWidth;
sHeight = document.documentElement.scrollHeight;
sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft;
sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;
}
分享到:
相关推荐
例如,以下代码片段根据`document.compatMode`的值来获取页面客户区的宽度、高度以及滚动条的位置: ```javascript if (document.compatMode == "BackCompat") { // 在怪异模式下,使用body对象来获取尺寸和滚动...
这段代码首先检查 `document.compatMode` 的值,如果为 `'CSS1Compat'`,则表示页面在标准模式下运行,否则是在Quirks Mode。然后,根据模式选择合适的元素(`document.documentElement` 或 `document.body`)来获取...
这段代码首先检查`document.compatMode`,如果在标准模式下,使用`document.documentElement.clientHeight`获取高度,否则使用`document.body.clientHeight`。这是因为IE在Quirks Mode下,高度是通过`document.body`...
如果`document.compatMode`为"CSS1Compat",表示页面处于标准模式,那么宽度和高度应该通过`document.documentElement.clientWidth`和`document.documentElement.clientHeight`获取。否则,如果`document.compatMode...
不过,`document.compatMode` 可以帮助我们判断当前文档是处于标准模式(CSS1Compat)还是怪异模式(BackCompat)。根据这个属性,我们可以编写兼容性代码: ```javascript if (document.compatMode === ...
2. **选择正确的body或documentElement对象**:由于IE在标准模式和怪异模式下使用的对象不同,因此需要根据`document.compatMode`来决定使用哪个对象。 3. **获取滚动条位置**:对于IE浏览器,使用`IeTrueBody()....
9. 浏览器兼容性:浏览器的兼容性是一个重要的问题,需要考虑不同浏览器的差异,例如使用 `document.compatMode` 来判断浏览器的兼容性模式。 本文档涵盖了前端工程师笔试面试题的多个技术领域,包括 HTML、CSS、...
综上所述,理解`document.body`和`document.documentElement`以及它们与`document.compatMode`的关系,能够帮助开发者更好地处理浏览器兼容性问题,特别是涉及到CSS布局和页面尺寸计算时。同时,熟悉各种尺寸属性和...
### jQuery 获取当前页面高度和宽度的方法 在前端开发过程中,我们经常会...对于现代浏览器环境,推荐直接使用 `window.innerHeight` 和 `window.innerWidth` 来获取页面的高度和宽度,这种方法更为简洁且兼容性更好。
document.documentElement.clientWidth和document.documentElement.clientHeight(在标准模式下)或document.body.clientWidth和document.body.clientHeight(在quirks模式下)可以用来获取浏览器视口的宽度和高度。...
接下来,我们关注另一个问题:获取浏览器视口的宽度和高度。这个功能在不同的浏览器中也有不同的实现。以下是一个兼容多种浏览器的函数: ```javascript function getPageWidth() { var pageWidth = window....
14. **浏览器标准模式与怪异模式**:标准模式遵循W3C标准,元素宽度仅包含内容宽度;怪异模式下,浏览器使用自己的非标准渲染规则,如IE盒模型。`window.top.document.compatMode`可检测当前模式。 以上知识点涵盖...
通过插件中的$.scrollLeft函数可以获取,对于在BackCompat模式下的浏览器或者是IE6及以下版本,使用Math.max方法获取body和documentElement的scrollLeft值中的较大者,而对于其他标准模式下的浏览器,则直接使用body...
14. **浏览器标准模式与怪异模式**:标准模式遵循W3C标准,怪异模式(Quirks Mode)遵循老式浏览器的渲染规则。可以通过`window.top.document.compatMode`检测当前模式。 15. **网站资源优化**:文件合并减少HTTP...
2. **兼容性考虑**:使用`getPageScroll`函数来兼容不同浏览器的滚动偏移量获取方式。 3. **UI交互**:可以进一步美化按钮样式,例如添加动画效果、改变按钮颜色等,提高用户体验。 4. **性能优化**:对于非常长的...
这段代码首先检查`window.innerWidth`和`window.innerHeight`是否可用,如果不支持,则根据浏览器的兼容模式(CSS1Compat表示标准模式)来获取文档元素或body元素的clientWidth和clientHeight,从而得到类似的效果。...
14. **浏览器标准模式与怪异模式**:标准模式遵循W3C标准,怪异模式(Quirks Mode)模拟早期浏览器的非标准解析方式。可以通过`document.compatMode`判断。 15. **网站文件和资源优化**:文件合并减少HTTP请求,...