Đã có lúc tôi cần phải làm điều này, và giải pháp đáng tin cậy trên nhiều trình duyệt mà tôi gặp phải là hack job. Tôi không phải là fan hâm mộ lớn nhất của các giải pháp như thế này, nhưng nó chắc chắn tạo ra kết quả chính xác hết lần này đến lần khác.
Ý tưởng là bạn sao chép phần tử, loại bỏ bất kỳ chiều rộng giới hạn nào và kiểm tra xem phần tử nhân bản có rộng hơn bản gốc hay không. Nếu vậy, bạn biết nó sẽ bị cắt ngắn.
Ví dụ: sử dụng 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();
Tôi đã tạo một jsFiddle để chứng minh điều này, http://jsfiddle.net/cgzW8/2/
Bạn thậm chí có thể tạo bộ chọn giả tùy chỉnh của riêng mình cho 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;
};
Sau đó sử dụng nó để tìm các yếu tố
$truncated_elements = $('.my-selector:truncated');
Bản trình diễn: http://jsfiddle.net/cgzW8/293/
Hy vọng điều này sẽ giúp, hacky như nó là.