点击推文按钮时,我需要访问data-url =“some link”。
使用此代码:
twttr.events.bind('click', function(event) {
var tweeturl = $('.twitter-share-button').data("url");
var count = $('.twitter-share-button').data("count");
console.log(tweeturl, count);
});
然而,控制台正在输出'undefined undefined'。谁能告诉我为什么会这样,以及如何解决它?
查看完整的JS Fiddle。
非常感谢大家。
答案 0 :(得分:2)
获取网址很简单,只需使用此HTML:
<div id="foo" data-url="http://ios-blog.co.uk">
<!-- other html -->
</div>
和这个事件处理程序:
twttr.events.bind('click', function(event) {
var link = $(event.target).parent().data('url');
console.log(link);
});
Twitter的javascript将.twitter-share-button
链接转换为包含共享按钮html的iframe。这意味着当您尝试在代码中选择它时,实际上您选择的iframe没有链接所具有的data-*
属性。
由于名为Same-origin policy的内容,您也无法获取iframe的内容并找到计数。
但是,你 能够使用Twitter的api获取推文数量:
$.ajax({
dataType: "jsonp",
url: 'http://urls.api.twitter.com/1/urls/count.json?url=http://ios-blog.co.uk',
success: function (data) {
console.log(data.count);
}
});
请参阅此工作示例:http://jsfiddle.net/TDgX5/
但是,这是不是官方推荐的方法,可能不应过分依赖。可能有更好的方法来解决您的问题,您使用的是什么?
答案 1 :(得分:1)
看起来Twitter API正在改变您的链接并将其放入IFrame中。因此链接可以更长时间访问。我可能需要更好地了解您的问题,以便正确回答您的问题。
但是你也可以将你的数据存储在foo元素中吗?
twttr.events.bind('click', function(event) {
var tweeturl = $('#foo').data("url");
var count = $('#foo').data("count");
console.log(tweeturl, count);
});
实施例