2011-07-27 55 views
3

Google+仅允许开发者在页面上发生特定事件时使用他们所称的“明确呈现”来显示Google+按钮(请参阅:http://code.google.com/apis/+1button/#example-explicit-render)。这对需要多个按钮的页面非常有用。Tweet按钮可以通过Javascript显式呈现,就像Google+按钮一样吗?

但是,Twitter会在页面上的每个链接的位置使用类别“twitter-share-button”呈现一个推文按钮(使用iframe)。这会导致非常缓慢的页面加载(即使在DOM加载后异步加载Twitter的widget.js)

有没有人知道一种方法来模仿Google+显式渲染按钮或呈现Tweet按钮的方法?只有当某个DOM事件发生(如鼠标悬停)

回答

1

我终于找到了一个办法做到这一点它几乎没有了Google+按钮一样干净,但在这里它是:

首先,确保你在您的文档头中包含jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

然后创建您的按钮将呈现具有相同的URL作为最终鸣叫按钮链接,与空div沿:

<a href="http://www.my-site-to-tweet-about.com" id="tlink"></a> 
<div id="tbutton"></div> 

在你的页面的底部,右侧/ body标签上面,包括来自Twitter的JavaScript,这将显示该按钮的功能,以及侦听器时所期望的事件发生,这将激活该功能:

<script type="text/javascript"> 
//async script, twitter button fashiolista.com style 
    (function() { 
    var s = document.createElement('SCRIPT'); 
    var c = document.getElementsByTagName('script')[0]; 
    s.type = 'text/javascript'; 
    s.defer = "defer"; 
    s.async = true; 
    s.src = 'http://platform.twitter.com/widgets.js'; 
    c.parentNode.insertBefore(s, c); 
    })(); 

function renderTweetButton(tbutton,tlink){ 
    var href = $("#"+tlink).attr('href'), 
     $target = $("#"+tbutton), 
     qstring = $.param({ url: href, count: "vertical" }), 
     toinsert = '<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/tweet_button.html?'+qstring+'" style="width:57px; height:70px;"></iframe>'; 
    $target.html(toinsert); 
} 

$("#hoverlink").mouseenter(function() { 
    renderTweetButton("tbutton","tlink"); 
}); 
</script> 

最后,添加一个链接到你的页面的地方,将激活以上功能基于某些事件:

<a href="#" id="hoverlink">Hover here to render a tweet button to div#tbutton.</a> 

就是这样。

如果你想整个测试的HTML页面,看看我是如何得到它的工作,在这里看到:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>jQuery Twitter Button Render Test</title> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

</head> 

<body> 

<a href="http://www.my-site-to-tweet-about.com" id="tlink"></a> 
<div id="tbutton"></div> 

<a href="#" id="hoverlink">Hover here to render a tweet button to div#tbutton.</a> 


<script type="text/javascript"> 
//async script, twitter button fashiolista.com style 
    (function() { 
    var s = document.createElement('SCRIPT'); 
    var c = document.getElementsByTagName('script')[0]; 
    s.type = 'text/javascript'; 
    s.defer = "defer"; 
    s.async = true; 
    s.src = 'http://platform.twitter.com/widgets.js'; 
    c.parentNode.insertBefore(s, c); 
    })(); 

function renderTweetButton(tbutton,tlink){ 
    var href = $("#"+tlink).attr('href'), 
     $target = $("#"+tbutton), 
     qstring = $.param({ url: href, count: "vertical" }), 
     toinsert = '<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/tweet_button.html?'+qstring+'" style="width:57px; height:70px;"></iframe>'; 
    $target.html(toinsert); 
} 

$("#hoverlink").mouseenter(function() { 
    renderTweetButton("tbutton","tlink"); 
}); 

</script> 

</body> 
</html> 
+0

是不是自己构建产生,虽然按钮的不支持/反对TOS方法iframe网址? – iX3

1

Sharrre是你在找什么。它支持包括Twitter在内的不少社交网络。

5

你可以使用:

twttr.widgets.load();