当前位置:  开发笔记 > 编程语言 > 正文

Twitter文本js,不计算包含URL的文本的长度#!

如何解决《Twitter文本js,不计算包含URL的文本的长度#!》经验,为你挑选了1个好方法。

我正在使用Twitter文本js来计算包含#!的网址的文本长度.例如:

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

在firefox调试器错误在twitter文本js中生成此行

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

没有记录特定错误,而是我的页面冻结并提醒我停止脚本,请帮忙.



1> 小智..:

在2012-05-31上在github存储库上合并的pull请求引入了twttr.txt.getTweetLength(text,options)函数,该函数正在考虑t.co URL并定义如下:

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的最佳实践,我们应该从twitter检索short_url_length和short_url_length_https值,并将它们作为twttr.txt.getTweetLength函数中的options参数传递:

在您的应用程序中每天请求一次GET帮助/配置,并将"short_url_length"(t.co的当前最大长度值)缓存24小时.缓存"short_url_length_https"(基于HTTPS的t.co链接的最大长度),并将其用作基于HTTPS的URL的长度.特别是知道t.co网址长度的某些变化将在2013-02-20生效,如Twitter开发者博客中所述

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有