我正在使用Twitter文本js来计算包含#!的网址的文本长度.例如:
"Some text http://domain.com#!/path/p/56319216 #tag1 #tag2".
在firefox调试器错误在twitter文本js中生成此行
twttr.txt.regexen.extractUrl.exec(text);
没有记录特定错误,而是我的页面冻结并提醒我停止脚本,请帮忙.
在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开发者博客中所述