【发布时间】:2013-01-16 11:42:22
【问题描述】:
我正在尝试检测(通过 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 处理为代价。
【问题讨论】:
-
您为什么要为这个问题创建一个新帐户?从您完美标记和格式化的帖子来看,您显然有另一个帐户可以用来回答问题。
-
没有其他我知道的帐户!标签和格式是他们的方式,因为我不想成为那个问准备不足的问题的人。我不是什么好人;只是想问我能回答的最好的问题!
-
谢谢你,顺便说一句...感谢您的称赞和 +1 :)
标签: javascript css firefox ellipsis