gpt4 book ai didi

javascript - IE 关于 borderWidth 的谎言?!如何获得实际值(value)?

转载 作者:行者123 更新时间:2023-12-03 11:24:05 26 4
gpt4 key购买 nike

默认情况下,很多人都知道,IE 在 body 标签周围有一个 2px 的边框。 IE 将此边框视为常规页面之外。基本上,这意味着文档原点实际上位于 [borderLeftWidth, borderTopWidth]。

这会在需要 clientXY 和 screenXY 的 JavaScript 中进行计算时产生问题。由于两个值之间有一个边框,您必须通过添加 borderWidth 来进行补偿。默认情况下此边框为 2px(除非您修改页面)。

但是,由于 body 也可以有用户定义的边框(如 7px 纯红色),您不能仅通过增加或减去 2px 来补偿。显然,您需要使用实际值 document.body.currentStyle['borderTopWidth']。默认情况下,这会返回 medium。由于值 medium 可能因浏览器版本而异,因此您需要执行 getPixelValue 检查(我使用的是:http://blog.stchur.com/2006/09/20/converting-to-pixels-with-javascript/)。

当您执行此检查时,medium 返回 4px。但那是不对的!正文的边框实际上是 2px,尽管它说的是 medium。这让我想到,IE 可能会为正文边框呈现不同的值。但是在手动将 borderWidth 设置为 medium 后,它会自行更正为 4px。出于某种原因,IE 会谎报 body 的默认 borderWidth。

所以,我的问题是:是否有任何方法可以获取 body 边界的实际值?或者有没有办法检查用户是否已经设置了边框(所以它不再是默认的 2px)。执行用户更改的边框检查绝对是我最后的选择,因为 IE 可能会决定删除默认边框,从而破坏我的脚本。

最佳答案

今天早上我在浴室里顿悟了,我找到了解决办法。

var b = document.body;
var first1 = b.clientHeight;
var first2 = b.clientWidth;
b.style.borderTopWidth = '0px';
b.style.borderLeftWidth = '0px';
b.style.borderTopWidth = first1 - b.clientHeight + "px";
b.style.borderLeftWidth = first2 - b.clientWidth + "px";

验证 IE 的错误 medium 值。如果有人有更好的解决方案,请展示。

关于javascript - IE 关于 borderWidth 的谎言?!如何获得实际值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com