1

私はいくつかの共有アイコンを作成しましたが、基本的には、bitly api呼び出しに非常に長い時間がかかるため、最初のクリックでコードが失敗しますが、もう一度クリックするとすべてが正常に機能します。

予想される動作は、ユーザーがアイコン(twitterまたはfacebook)をクリックすると、ポップアップが開き、正しいソーシャルネットワーク共有ウィンドウが開きます。

これが私のコードです:

$j(document).ready(function() { 
var isShortened = false; 

function bit_url(url) { 
    var url = url; var username = "account"; 
    var key = "xxxxxxxxxxxxxxxxxxxxxxxxx"; 
    var fbShareURL = 'http://www.facebook.com/sharer/sharer.php'; 
    var twShareURL = 'http://twitter.com/intent/tweet'; 
    var articleTitle = encodeURIComponent('${title?html}'); 

    $j.ajax({ 
        url:"https://api-ssl.bit.ly/v3/shorten", 
        data:{longUrl:url,apiKey:key,login:username}, 
        dataType:"jsonp", 
        success:function(v) { 
            var bit_url = v.data.url; 
            $j("#facebookBtn").attr("href", fbShareURL + '?u=' + encodeURIComponent(bit_url) + '&t=' + articleTitle); 
            $j("#twitterBtn").attr("href", twShareURL + '?text=Check out ' + articleTitle +' - &url=' + encodeURIComponent(bit_url) + '&via=account'); 
        } 
    }); 
}   

$j('.share-btn').click(function() { 
    var btnClicked = $j(this); 
    var url = ''; 

    if (isShortened == false){ 
        bit_url('${url?html}'); 
        setTimeout(function() {
            url = $j(btnClicked).attr('href'); 
            window.open(url,'share','width=665, height=350, scrollbars=no'); 
        }, 800); 
    } else { 
        url = $j(btnClicked).attr('href'); 
        window.open(url,'share','width=665, height=350, scrollbars=no'); 
    } 

    isShortened = true; 
    return false; 
}); 
});

どんな考えでも大歓迎です。

4

0 に答える 0