Подтвердить что ты не робот

При использовании JQuery Linkify плагин, как я усекаю URL?

https://github.com/maranomynet/linkify

Я использую этот плагин. Он работает, и все в порядке. Но есть ли опция, в которую я могу подключиться, чтобы длина URL была больше, чем "X", а затем усечь ее и добавить "..."?

Сейчас URL-адреса настолько длинны.

Я заметил, что в демо есть функция обратного вызова handleLinks, но как я могу это использовать?

4b9b3361

Ответ 1

Вы правы, вы можете использовать функцию обратного вызова handleLinks. Например, я написал простой функционал, который вам нужен:

handleLinks: function (links) {
    for (var i = 0, cnt = links.length, tmpLink; i < cnt; i++) {
        tmpLink = links[i].innerHTML;
        if (tmpLink.length > 10) {
            links[i].innerHTML = tmpLink.substr(0, 10) + '...';
        }
    }
}

Он усекает ссылки, если они длиннее 10 символов. Вы можете изменить этот script по вашим потребностям.

Ответ 2

Для усечения URL-адресов я выбираю сокращение в середине, поскольку домен и файл обычно более важны, чем путь к каталогу.

Взято и адаптировано для этого вопроса из моего вилки GitHub библиотеки JavaScript Andrew Plummer Sugar.

String.prototype.shorten = function(length, position, countSplitter, splitter) {
  if (this.length < 1 && length < 1) return String(this);

  if (!(typeof(splitter) === 'string')) splitter = '...';
  if (!(typeof(countSplitter) === 'boolean')) countSplitter = true;

  var balance = (countSplitter) ? splitter.length : 0;

  if (length <= balance || this.length <= length) return String(this);

  // Perform shortening
  var shortened, beforeSplitter, afterSplitter;

  if (position == 'left') {
    afterSplitter = this.substring(this.length - length + balance, this.length - 1);
    shortened = splitter + afterSplitter;
  } else if (position == 'right') {
    beforeSplitter = this.substring(0, length - balance);
    shortened = beforeSplitter + splitter;
  } else {
    beforeSplitter = this.substring(0, Math.ceil((length / 2) - (balance / 2)));
    afterSplitter = this.substring(this.length - Math.floor((length / 2) - (balance / 2)), this.length);
    shortened = beforeSplitter + splitter + afterSplitter;
  }

  return shortened;
}

Пример сокращения Url, поэтому результирующая строка имеет длину 20 символов:

var toShorten = 'http://stackoverflow.com/info/9156458/when-using-jquery-linkify-plugin-how-do-i-truncate-the-url';
var shortened = toShorten.shorten(20); // Output: 'http://st...-the-url'

Примечание: этот код был проверен только как проверенный, а не модульный. Однако реализация сахара была проверена. p >