Sekali waktu saya perlu melakukan ini, dan satu-satunya solusi yang dapat diandalkan lintas-browser saya temui adalah pekerjaan hack. Saya bukan penggemar solusi terbesar seperti ini, tetapi tentu saja menghasilkan hasil yang benar berulang kali.
Idenya adalah Anda mengkloning elemen, menghapus lebar ikatan apa pun, dan menguji apakah elemen yang dikloning lebih lebar dari aslinya. Jika demikian, Anda tahu itu akan terpotong.
Misalnya, menggunakan jQuery:
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();
Saya membuat jsFiddle untuk mendemonstrasikan ini, http://jsfiddle.net/cgzW8/2/
Anda bahkan dapat membuat pemilih-semu kustom Anda sendiri untuk jQuery:
$.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;
};
Kemudian gunakan untuk menemukan elemen
$truncated_elements = $('.my-selector:truncated');
Demo: http://jsfiddle.net/cgzW8/293/
Semoga ini bisa membantu, hacky apa adanya.