【发布时间】:2013-02-06 02:38:39
【问题描述】:
我在不同浏览器中使用 offsetWidth 时遇到了问题。结果的这种差异导致了一些奇怪的布局。我创建了一个非常小的示例来显示我所看到的。
HTML
<table id="tbl">
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
</table>
<button onclick="calc()">Calculate Offset Width</button>
<div>Cell 1 offsetWidth: <span id="c1offWidth"></span></div>
js
function calc(){
document.getElementById('c1offWidth').innerHTML =
document.getElementById('tbl').children[0].children[0].offsetWidth;
}
CSS
当我在 chrome、safari 和 opera 上运行时,单元格 1 的偏移宽度返回的值为 72。当我在 firefox 和 IE9-10 上运行时,返回的值为 77。
我的印象是这是计算元素宽度(包括内边距和边框)的最佳方法。
是否存在始终返回相同结果的跨浏览器解决方案?我尝试使用 jQuery,但结果更加令人困惑。
编辑 因为每个人都推荐outerWidth,所以我也为此做了一个jsbin。结果仍然因浏览器而异。 Chrome 返回 36; IE9-10 和 Firefox 返回 39。
【问题讨论】:
-
当我们应该使用雕刻粘土时,许多无知的程序员使用 jQuery 就像玩 doh 一样可笑!使用原生 JS 而不是像 jQuery 这样的资源库。做你的 jsperf 测试!
-
啊,是的,旧的 1 全局 1 文件技术。 avacweb.com/17860.js。减慢用户速度的绝佳模式。
标签: javascript jquery html css cross-browser