Когда-то мне нужно было это сделать, и единственное кросс-браузерное надежное решение, с которым я столкнулся, - это взломать работу. Я не самый большой поклонник таких решений, но это, безусловно, дает правильный результат снова и снова.
Идея состоит в том, что вы клонируете элемент, удаляете любую ограничительную ширину и проверяете, является ли клонированный элемент более широким, чем оригинал. Если это так, вы знаете, что это будет усечено.
Например, используя 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/
Надеюсь, это поможет, взломать, как есть.
В комментариях (вы действительно должны обновить свой вопрос, чтобы отразить их), вы говорите, что определили knex
с помощью:
const knex = require('knex');
Вы должны взглянуть на Инициализация библиотеки [116 ] параграф в разделе установки Node.js .
Он должен выглядеть следующим образом:
const knex = require('knex')({
client: 'mysql',
connection: {...}
});
Это означает, что knex
должен быть результатом вызова функции , представленной require
.