2013-03-22 87 views
0

我在一個頁面的應用程序上使用sharethis懸停小部件(顯示:固定)與jQuery地址一起。所有請求都是pushState並通過ajax加載。因此,當用戶從pageA.html轉到pageB.html時,地址通過pushState進行更新。當我點擊「share to facebook」上的某個頁面時,我進入網站的頁面將被共享,而不是當前頁面。這種現象可以在this website上看到。更新shareThis懸停小部件與新的地址,標題等

我已經在stWidget對象中搜索URL,標題等存儲在哪裏,但我找不到它。 Sharethis對此非常諱言,並繼續提及this page,但這隻解釋瞭如何在ajax加載的內容中激活小部件,而不是如何用新地址,標題等更新小部件或如何修改它。

+0

ShareThis代碼在不同的窗口? (即iframe) 或者,您的頁面是否被加載到iframe中,並且ShareThis代碼在此窗口「外部」? – melancia 2013-03-22 14:12:35

+0

ShareThis代碼正在通過正常的頭加載,我也注意到部分通過iframe。如果你檢查了這個dom,你會看到一個iframe被創建爲http://seg.sharethis.com/getSegment.php?purl=http%3A%2F%2Fwww.posterlion.com%2Fposters%2Fpersonalities-posters&jsref=&rnd=1363961293908我試着重新加載iframe,但沒有幫助.... – bicycle 2013-03-22 14:23:03

+0

我能看到的唯一選擇是刪除所有的按鈕,並通過.addEntry()重新添加它們令人毛骨悚然的愚蠢,他們是如此隱祕的事情如此簡單作爲直接更新變量 – bicycle 2013-03-22 14:47:04

回答

1

最後我做了一個像這樣的處理程序。這很愚蠢,因爲它刪除了按鈕並重新添加它們,而不僅僅是改變變量。我仍然不明白爲什麼他們對如此簡單的程序非常隱祕,就像刷新按鈕的變量一樣。

function updateShareThisButtons() { 

    var services = []; 
    services.push("facebook", "googleplus","twitter","pinterest", "email", "sharethis"); 
    if($('#sthoverbuttons-chicklets').length == 0) 
     $('.sthoverbuttons-chicklets').attr('id','sthoverbuttons-chicklets') 

    $('#sthoverbuttons-chicklets').html(''); 
    for (var i = 0; i < services.length; i++) { 
      stWidget.addEntry({"service":services[i],"element":document.getElementById('sthoverbuttons-chicklets'),"url":$.address.baseURL(),"title":$.address.title(), "type":"large","summary":"summary"}); 
    }; 
}