3 Stimmen

Kann eine Tweet-Schaltfläche explizit mit Javascript gerendert werden, wie die Google+-Schaltflächen?

Google+ ermöglicht es Entwicklern, einen so genannten "expliziten Render" zu verwenden, um die Google+-Schaltfläche nur dann anzuzeigen, wenn ein bestimmtes Ereignis auf der Seite stattfindet (siehe: http://code.google.com/apis/+1button/#beispiel-explicit-render ). Dies ist sehr hilfreich auf Seiten, auf denen mehrere Schaltflächen erforderlich sind.

Twitter rendert jedoch anstelle jedes Links auf der Seite einen Tweet-Button (unter Verwendung eines iframe) mit der Klasse "twitter-share-button". Dies führt zu sehr langsamen Seitenladevorgängen (selbst wenn ich Twitters widget.js asynchron lade, nachdem das DOM geladen wurde).

Kennt jemand eine Möglichkeit, das explizite Google+-Rendering für Tweet-Schaltflächen zu imitieren, oder eine Möglichkeit, eine Tweet-Schaltfläche nur zu rendern, wenn ein bestimmtes DOM-Ereignis stattfindet (wie Mouseover)?

5voto

cas Punkte 51

Sie können es verwenden:

twttr.widgets.load();

1voto

ChiCgi Punkte 725

Ich habe endlich einen Weg gefunden, dies zu tun. Es ist nicht annähernd so sauber wie die Google+ Schaltfläche, aber hier ist sie:

Vergewissern Sie sich zunächst, dass Sie jQuery in den Kopf Ihres Dokuments eingebunden haben:

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

Erstellen Sie dann einen Link mit der gleichen URL wie die eventuelle Tweet-Schaltfläche sowie ein leeres Div, in dem Ihre Schaltfläche dargestellt wird:

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

Unten auf Ihrer Seite, direkt über dem /body-Tag, fügen Sie das Javascript von Twitter und die Funktion ein, die die Schaltfläche wiedergibt, sowie den Listener, der die Funktion aktiviert, wenn das gewünschte Ereignis eintritt:

<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>

Fügen Sie schließlich irgendwo auf Ihrer Seite einen Link ein, der die obige Funktion bei einem bestimmten Ereignis aktiviert:

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

Das war's.

Wenn Sie die gesamte Test-HTML-Seite sehen wollen, um zu sehen, wie es funktioniert, sehen Sie hier:

<!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>

1voto

garbelini Punkte 458

Sharrre ist das, wonach Sie suchen. Es unterstützt eine ganze Reihe von sozialen Netzwerken, einschließlich Twitter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X