Twitter文本js,不计算包含带有#的url的文本的长度!

Posted

技术标签:

【中文标题】Twitter文本js,不计算包含带有#的url的文本的长度!【英文标题】:Twitter text js , not calculating the length from text which contains urls with #! 【发布时间】:2016-03-17 09:56:43 【问题描述】:

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

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

在 twitter 文本 js 中的这一行上生成 firefox 调试器错误

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

没有记录具体错误,而是我的页面冻结并提醒我停止脚本,请帮助。

【问题讨论】:

如果你想计算text的长度,那么为什么不简单地text.length呢? @Moin Twitter 将推文中的所有 url 包装为 t.co 短 url。所以我需要在发送到 Twitter 之前计算推文的长度。 你在使用github.com/twitter/twitter-text/tree/master/js/pkg这里的最新版本吗? 【参考方案1】:

2012 年 5 月 31 日在 github 存储库中合并的拉取请求引入了 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 函数:

每天在您的应用程序中请求 GET 帮助/配置一次,并将“short_url_length”(t.co 当前的最大长度值)缓存 24 小时。缓存“short_url_length_https”(基于 HTTPS 的 t.co 链接的最大长度)并将其用作基于 HTTPS 的 URL 的长度。 特别是知道 t.co url 长度的一些更改将在 2013 年 2 月 20 日生效,如 twitter 开发者博客中所述

【讨论】:

以上是关于Twitter文本js,不计算包含带有#的url的文本的长度!的主要内容,如果未能解决你的问题,请参考以下文章

在 Twitter 上共享带有查询字符串的 URL

带有 twitter bootstrap 的 javascript 数据表

为啥twitter API在文本末尾添加url

带有英雄单元文本的 Twitter Bootstrap 进度条未正确显示

带有或不带有 Twitter Bootstrap 的嵌套侧边栏

实时检索推文并发送带有推文文本的电子邮件