我有一个应用程序可以让YouTube视频ID通过Twitter分享。看看这些推文,我可以看到用户正在分享它们,但在某些情况下,共享内容会被破坏。
我们有一个用id响应的restful API,然后使用字符串替换方法替换{{id}}。
http://twitter.com/intent/tweet?text=http://www.youtube.com/watch?v={{id}} Share your video to win.
替换方法
var href = $('#twitter-btn').attr('href');
$('#twitter-btn').attr('href', href.replace('{{id}}', response.youtube_id) );
在大多数情况下,推文都可以这样看......
http://www.youtube.com/watch?v=0bxW5fd Share your video to win.
但在某些情况下,我们看到......
http://www.youtube.com/watch?v
我觉得很奇怪的是' ='已被删除。我们排除了服务器给出错误的响应,因为我们记录所有ID以检查它们是否有效。
是否有人知道这种情况会如何发生,或者某些ID会突破推特,因为我知道'#'符号需要被url编码为%23,否则会中断。
共享功能使用标准的Twitter共享。
<script type="text/javascript" async src="//platform.twitter.com/widgets.js"></script>
这真的让我很难过,因为这是一项基本的任务,我无法理解这是怎么发生的。
任何想法都将非常感激。
答案 0 :(得分:1)
replace
isn't broken。如果href
字符串确实包含
http://twitter.com/intent/tweet?text=http://www.youtube.com/watch?v={{id}} Share your video to win
...然后,您显示的replace
会将{{id}}
替换为response.youtube_id
的值。
鉴于=
没有显示在结果中,我看到的唯一可能性是:
href
首先没有={{id}}
。也许有些事情是在你抓住之前修改属性。
您不是直接查看replace
的结果,而是直接查看派生的的结果,并且在推导的过程中=
并且删除后的值,可能只有当=
最初后跟一些无效的东西(可能是空白)时 - 在这种情况下,问题将出现在response.youtube_id
。
但是不要专注于replace
,这不是问题。
答案 1 :(得分:0)
http://www.dummies.com/how-to/content/how-to-insert-links-into-tweets.html
或使用http编码查询字符串参数text=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D%7B%7Byourid%7D%7D
和
$('#twitter-btn').attr('href', href.replace('yourid', response.youtube_id) );
这应该是它。