簡體   English   中英

社交媒體的彈出窗口

[英]Social media's in popup

我的網站社交媒體插件有問題,問題出在Twitter和Facebook。 Google+完美運行。

我正在嘗試使插件與jQuery中的彈出腳本配合使用。 當他們單擊鏈接時,彈出窗口將添加到body標簽的末尾。 在該函數中,我放入了Facebook,Twitter和Google+的JS代碼,然后將div的位置放在正確的位置。 並不是問題是,當我第一次單擊彈出窗口時(在重新加載頁面之后),所有插件都可以正常工作。 當我關閉彈出窗口並重新打開它時。 僅顯示Google+(或帶iFrame的Facebook)...

每當我打開彈出窗口時,我都會稱呼這部分社交媒體插件!

                // Google Code
                (function() {
                    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
                    po.src = 'https://apis.google.com/js/plusone.js';
                    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
                })();
                // Twitter Code
                !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");

                if(options.socialLink != false){
                    var FBsocialLink = 'href='+options.socialLink;
                    var socialLink = 'data-href="'+options.socialLink+'"';
                }
                //show FB
                $('.popup_container').append('<iframe src="//www.facebook.com/plugins/like.php?'+FBsocialLink+'&amp;send=false&amp;layout=button_count&amp;width=125&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:125px; height:21px;" allowTransparency="true"></iframe>');
                //show Google+
                $('.popup_container').append('<div class="g-plusone" data-size="medium" '+socialLink+'></div>');
                //show Twitter
                $('.popup_container').append('<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.rednasdesign.nl">Tweet</a>');

有解決辦法嗎?

由於每次打開彈出窗口時都要插入插件代碼,因此請確保調用jQuery("#MyDiv").dialog("destroy"); 有關更多信息,請參見http://jqueryui.com/demos/dialog/

另外,您可能需要按照https://developers.google.com/+/plugins/+1button/parsetags設置為explicit ,並在jQuery對話框的open事件中調用gapi.plusone.render()

問題出在異步加載的javascript代碼中。 它可能會在彈出窗口之外創建腳本標簽。 在第二次調用時,它將檢查此標記是否已存在並且不執行任何操作。 查找if(!d.getElementById(id))部分。

但是,在您的情況下,異步加載器仍然沒有意義,因為在用戶打開彈出窗口時頁面已經完全加載。

因此,您可以直接包含外部腳本。 當再次顯示彈出窗口時,將清除完整的內容,包括那些腳本標簽。

var socialLink = e.attr("data-link");
var message = e.attr("data-title");
var hashtag = e.attr("data-hashtag");

var html = ''
    + '<div class="socialbutton"><iframe src="https://www.facebook.com/plugins/like.php?href='+socialLink+'&amp;send=false&amp;layout=button_count&amp;width=125&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:125px; height:21px;" allowTransparency="true">Loading Facebook</iframe></div>'
    + '<div class="socialbutton"><div class="g-plusone" data-size="medium" data-href="'+socialLink+'">Loading Google+</div></div>'
    + '<div class="socialbutton"><a href="https://twitter.com/share" class="twitter-share-button" data-url="' + socialLink + '" data-text="' + message + '" data-hashtags="' + hashtag + '">Loading Twitter</a></div>'

    + '<div><a href="https://stendhalgame.org/wiki/Two_clicks_for_more_privacy" target="_blank">Two clicks for more privacy.</a></div>'

    + '<script async type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>'
    + '<script async type="text/javascript" src="https://platform.twitter.com/widgets.js" id="twitter-wjs"></script>';

$('#popupContent').html(html);

打開彈出窗口和完全加載按鈕之間有一點延遲,尤其是在Internet連接速度慢的情況下。 為了防止更快的按鈕跳動,我將它們放入div.elements中,並在CSS中定義了24px的固定高度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM