Bir zamanlar bunu yapmam gerekiyordu ve karşılaştığım tek tarayıcılar arası güvenilir çözüm hack işiydi. Böyle çözümlerin en büyük hayranı değilim, ama kesinlikle tekrar tekrar doğru sonuç veriyor.
Fikir, öğeyi klonlamanız, sınırlama genişliğini kaldırmanız ve klonlanan öğenin orijinalden daha geniş olup olmadığını test etmenizdir. Eğer öyleyse, bunun kesileceğini biliyorsunuz.
Örneğin, jQuery kullanarak:
var $element = $('#element-to-test');
var $c = $element
.clone()
.css({display: 'inline', width: 'auto', visibility: 'hidden'})
.appendTo('body');
if( $c.width() > $element.width() ) {
// text was truncated.
// do what you need to do
}
$c.remove();
Bunu göstermek için bir jsFiddle yaptım, http://jsfiddle.net/cgzW8/2/
JQuery için kendi özel sözde seçicinizi bile oluşturabilirsiniz:
$.expr[':'].truncated = function(obj) {
var $this = $(obj);
var $c = $this
.clone()
.css({display: 'inline', width: 'auto', visibility: 'hidden'})
.appendTo('body');
var c_width = $c.width();
$c.remove();
if ( c_width > $this.width() )
return true;
else
return false;
};
Sonra öğeleri bulmak için kullanın
$truncated_elements = $('.my-selector:truncated');
Demo: http://jsfiddle.net/cgzW8/293/
Umarım bu yardımcı olur, hacky olduğu gibi.