Колись мені це потрібно було зробити, і єдине надійне рішення для перехресних браузерів, на яке я натрапив, - це робота над злом. Я не найбільший фанат подібних рішень, але це, безумовно, знову і знову дає правильний результат.
Ідея полягає в тому, щоб ви клонували елемент, видаляли будь-яку обмежувальну ширину і перевіряли, чи клонований елемент ширший за оригінал. Якщо так, то ви знаєте, що це буде усічено.
Наприклад, використовуючи 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();
Я створив jsFiddle, щоб продемонструвати це, http://jsfiddle.net/cgzW8/2/
Ви навіть можете створити свій власний псевдоселектор для 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;
};
Потім використовуйте його для пошуку елементів
$truncated_elements = $('.my-selector:truncated');
Демонстрація: http://jsfiddle.net/cgzW8/293/
Сподіваємось, це допомагає, хакі, як це є.