javascript - 如何判断 Firefox 表格单元格中的文本是否溢出?

标签 javascript firefox css

我有一个包含数据的表格,我不想将其换行到多行,所以这是应用于单元格的 CSS:

td {
    white-space: nowrap;
    overflow: hidden;
}

这工作得很好而且花花公子,但是,我想向用户显示一个包含该单元格全部内容的工具提示,但只有一些溢出的文本被隐藏了。因此,我需要一种编程方式来判断是否正在发生裁剪/chop 。

在 Safari 和 Chrome 中,我可以检查 element.scrollWidth 属性,如果它大于 element.clientWidth 则它正在被裁剪。然而,无论单元格中有多少文本,Firefox 总是报告这两者相同(边框/填充/边距有几个像素)。

我在 JSBin 上放了一个例子,你可以自己看看。尝试调整窗口大小并查看输出。

http://jsbin.com/equbo3/4

ps:对我来说,该解决方案不需要在 IE 中工作,但如果您也知道一种方法,请分享。

最佳答案

(function(t) {
    var c, h, i;

    for (i = 0; i < t.length; i++) {
        c = t[i];
        h = c.clientHeight;
        c.style.whiteSpace = 'normal';
        if ( c.clientHeight > h ) { /* add tooltip */ }
        c.style.whiteSpace = 'nowrap';
    }
})( ARRAY_OF_CELLS );

只需将 TD 元素数组传入上述函数,并为在 {/* add tooltip */} block 内溢出的单元格定义自定义行为。

现场演示: http://jsfiddle.net/nJarj/1/

在现场演示中,您可以看到溢出的单元格是红色的。

关于javascript - 如何判断 Firefox 表格单元格中的文本是否溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4925444/

相关文章:

javascript - TinyMCE 浏览器 "fixes"

javascript - Angular ng-class中的css过渡淡入淡出

javascript - socket.io,使用 PHP session 作为带有 redis 的 socket.id

html - Firefox 和 chrome 的 css 差异 : element height is different

javascript - 将 jQuery 搜索限制为特定容器,例如 h 和 p 标签

firefox - 在 Firefox 中忽略最大高度,在 Chrome 和 Safari 中有效

css - Foundation 5 带水平滚动条的表

html - 两个div,一个滚动,另一个静态

javascript - 像这样初始化 jQuery 有什么好处?

javascript - 没有显式类型属性的操作