Текст Twitter js, не вычисляя длину текста, содержащего URL-адреса С#!

Я использую текст Twitter js для вычисления длины текста с URL-адресами, содержащими #!. например:

"Some text http://domain.com#!/path/p/56319216 #tag1 #tag2".

В ошибке отладчика firefox генерируется в этой строке текст twitter js

 twttr.txt.regexen.extractUrl.exec(text);

Никакая конкретная ошибка не регистрируется, а моя страница зависает и предупреждает меня, чтобы остановить script, пожалуйста, помогите.

Ответ 1

Запрос на перенос, который был объединен в репозиторий github в 2012-05-31, ввел функцию twttr.txt.getTweetLength(текст, параметры), которая учитывает URL-адреса t.co и определяется следующим образом:

twttr.txt.getTweetLength = function(text, options) {
if (!options) {
    options = {
        short_url_length: 22,
        short_url_length_https: 23
    };
}
var textLength = text.length;
var urlsWithIndices = twttr.txt.extractUrlsWithIndices(text);

for (var i = 0; i < urlsWithIndices.length; i++) {
    // Subtract the length of the original URL
    textLength += urlsWithIndices[i].indices[0] -urlsWithIndices[i].indices[1];

    // Add 21 characters for URL starting with https://
    // Otherwise add 20 characters
    if (urlsWithIndices[i].url.toLowerCase().match(/^https:\/\//)) {
        textLength += options.short_url_length_https;
    } else {
        textLength += options.short_url_length;
    }
}

return textLength;
};

Итак, ваша функция просто станет:

function charactersleft(tweet) {
return 140 - twttr.txt.getTweetLength(tweet);
}

Кроме того, в отношении лучших практик с t.co мы должны получить значения short_url_length и short_url_length_https из твиттера и передать их в качестве параметра параметров в функции twttr.txt.getTweetLength:

Запросить помощь/настройку GET один раз в день в приложении и кешировать "short_url_length" (значение максимальной длины t.co) в течение 24 часов. Кэш "short_url_length_https" (максимальная длина для HTTPS-ссылок t.co) и использовать его как длину URL-адресов на основе HTTPS. Особенно зная, что некоторые изменения в длине URL-адреса t.co будут эффективны в 2013-02-20 годах, как описано в блоге разработчиков twitter