javascript - 检测 CSS 文本溢出 : ellipsis in Firefox

标签 javascript css firefox ellipsis

我正在尝试(通过 javascript)检测文本溢出何时生效。经过大量研究,我有一个可行的解决方案,但在任何版本的 Firefox 中除外:

http://jsfiddle.net/tonydew/mjnvk/

如果您调整浏览器以便应用省略号,Chrome、Safari、甚至 IE8+ 都会提醒省略号处于事件状态。在 Firefox 中(我尝试过的每个版本,包括 17 和 18)就没有那么多了。 Firefox 会始终告诉您省略号未激活。

console.log() 输出显示原因:

Firefox (OS X):
116/115 - false
347/346 - false

Chrome (OS X):
116/115 - false
347/851 - true 

在 Firefox 中,scrollWidth 永远不会大于 offsetWidth。

我能找到的最接近解决方案的是“Why are IE and Firefox returning different overflow dimensions for a div?”,但我已经在使用建议的解决方案。

任何人都可以阐明如何在 Firefox 中实现这一点吗?


编辑:除了下面的@Cezary 回答之外,我发现了一种不需要更改标记的方法。但是,它会做更多的工作,因为它会临时克隆每个元素以针对以下对象进行测量:

$(function() {
    $('.overflow').each(function(i, el) {
        var element = $(this)
                      .clone()
                      .css({display: 'inline', width: 'auto', visibility: 'hidden'})
                      .appendTo('body');

        if( element.width() > $(this).width() ) {
            $(this).tooltip({
                title: $(this).text(),
                delay: { show: 250, hide: 100 },
            });
        }
        element.remove();
    });
});

http://jsfiddle.net/tonydew/gCnXh/

有人对此的效率发表评论吗?如果我有一个包含许多潜在溢出元素的页面,这会产生负面影响吗?如果可以,我想避免修改现有标记,但不会以每次页面加载时过多的 JS 处理为代价。

最佳答案

你需要在每个 td 中添加 div 以使其在 firefox 中工作,

<td class="first"><div>Here is some text</div></td>
<td class="second">
     <div>Here is some more text. A lot more text than
     the first one. In fact there is so much text you'd think it was a 
     waste of time to type all ofit.
     </div>
</td>

CSS

td div {
   white-space: nowrap;
   text-overflow: ellipsis;
   overflow:hidden;
   width:100%;
}

Jsfiddle

http://jsfiddle.net/mjnvk/7/

关于javascript - 检测 CSS 文本溢出 : ellipsis in Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641595/

相关文章:

javascript - 在使用 javascript 单击按钮时不使用生成器函数即可获取序列中的下一个值

javascript - 第一次请求时未发送 Cookie

javascript - .toFixed(1) 不适用于 8.333333333333334 十进制数

javascript - 使用 jQuery 或内置 JavaScript API 强制关闭 HTML 输入

css - IONIC 2 在 Android 和 iOS 中将标题对齐吗?

asp.net - 如何在 Firefox 中使用 Javascript 设置 DIV 宽度/高度

javascript - 正则表达式值的 JSON.parse() 问题

javascript - Firefox 中的 float 右对齐问题

javascript - Div 与前一个 div 重叠并破坏了前一个 div 的功能

javascript - Div向下滚动并使用jquery向上滚动