Pee*_*Haa 16 javascript twitter
来自Twitter API文档(http://dev.twitter.com/pages/counting_characters):
140个字符的tweet限制并不真正计算字符数,而是字符串的字节数.
如何使用Javascript计算字符串中的字节数,或者我的字符串中的每个字符总是使用2个字节,因为我将页面的编码设置为UTF-8?
也许已经有一个很好的计数器功能供我使用?
mol*_*v00 21
实际上,由于t.co url shortener,只计算字符不再起作用.查看这两个Twitter引用,了解如何处理缩短的链接:
https://support.twitter.com/articles/78124-how-to-shorten-links-urls
https://dev.twitter.com/docs/tco-url-wrapper/how-twitter-wrap-urls
如果你在客户端寻求帮助,你将不得不用twitter-text.js建立一个新朋友
https://github.com/twitter/twitter-text-js
我还发布了一个函数的演练,我用它来计算推文中的剩余字符
http://blog.pay4tweet.com/2012/04/27/twitter-lifts-140-character-limit/
该功能看起来像这样
function charactersleft(tweet) {
var url, i, lenUrlArr;
var virtualTweet = tweet;
var filler = "01234567890123456789";
var extractedUrls = twttr.txt.extractUrlsWithIndices(tweet);
var remaining = 140;
lenUrlArr = extractedUrls.length;
if ( lenUrlArr > 0 ) {
for (var i = 0; i < lenUrlArr; i++) {
url = extractedUrls[i].url;
virtualTweet = virtualTweet.replace(url,filler);
}
}
remaining = remaining - virtualTweet.length;
return remaining;
}
Run Code Online (Sandbox Code Playgroud)
该函数返回剩余的字符数,假设所有URL(包括那些缩短为少于20个字符的URL)已被t.co"缩短"为19个字符加上一个空格.
它假定包含了twitter-text.js.
rd3*_*d3n 19
感谢moluv00的回答,为我节省了一些搜索,让我走上正轨.我只想分享我在应用程序中处理推特字符计数(由于小网址)的方式.
甲拉动请求作为被合并于GitHub的存储库上2012-05-31引入twttr.txt.getTweetLength(文本,选项)即正在考虑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;
};
Run Code Online (Sandbox Code Playgroud)
所以你的功能将变成:
function charactersleft(tweet) {
return 140 - twttr.txt.getTweetLength(tweet);
}
Run Code Online (Sandbox Code Playgroud)
另外,关于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开发者博客中所述
\n\n\n我如何能够使用 Javascript 计算字符串中的字节数,或者自从我将页面编码设置为 UTF-8 后,字符串中的每个字符总是使用 2 个字节?
\n
JavaScript 计算的是字符而不是字节。你根本没有问题。
"\xe5\x98\xb0\xe5\x98\xb0\xe5\x96\xb3\xe5\x96\xb3".length == 4\n"Twitter".length == 7\nRun Code Online (Sandbox Code Playgroud)\n\n更新:以上仅适用于只包含基本多语言平面 (BMP) 中的字符的字符串。
\n\n当字符串包含 BMP 外部的字符(如表情符号)或组合标记时,确定字符串长度就不那么简单了。以下博客文章详尽地讨论了这个问题,强烈建议阅读: https: //mathiasbynens.be/notes/javascript-unicode
\n| 归档时间: |
|
| 查看次数: |
10864 次 |
| 最近记录: |