Javascript 社交媒体';s在弹出窗口中
我的网站的社交媒体插件有问题,问题是Twitter和Facebook。Google+工作得非常好 我试图让插件与jQuery中的弹出脚本一起工作。当他们点击一个链接时,弹出窗口被添加到主体标签的末尾。在函数中,我将Facebook、Twitter和Google+的JS代码放在正确的位置。问题不是当我第一次点击弹出窗口时(在重新加载页面后),所有插件都工作正常。当我关闭弹出窗口并重新打开它时。只有Google+(或带有iFrame的Facebook)显示 每次我打开弹出窗口时,我都会调用这部分社交媒体插件Javascript 社交媒体';s在弹出窗口中,javascript,jquery,facebook,twitter,social-media,Javascript,Jquery,Facebook,Twitter,Social Media,我的网站的社交媒体插件有问题,问题是Twitter和Facebook。Google+工作得非常好 我试图让插件与jQuery中的弹出脚本一起工作。当他们点击一个链接时,弹出窗口被添加到主体标签的末尾。在函数中,我将Facebook、Twitter和Google+的JS代码放在正确的位置。问题不是当我第一次点击弹出窗口时(在重新加载页面后),所有插件都工作正常。当我关闭弹出窗口并重新打开它时。只有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+'&send=false&layout=button_count&width=125&show_faces=false&action=like&colorscheme=light&font&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>');
//谷歌代码
(功能(){
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);
})();
//推特代码
!函数(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);}(文档,“脚本”,“twitter wjs”);
if(options.socialLink!=false){
var FBsocialLink='href='+options.socialLink;
var socialLink='data href=“”+options.socialLink+”;
}
//显示FB
$('.popup_container')。追加('');
//显示谷歌+
$('.popup_container')。追加('');
//显示推特
$('.popup_container')。追加('');
有解决方法吗?因为每次弹出窗口打开时都要插入插件代码,所以一定要调用
jQuery(“MyDiv”)。对话框(“销毁”)代码>。有关更多信息,请参阅
此外,您可能需要将parsetags
设置为explicit
per,并在jQuery对话框的打开事件中调用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+'&send=false&layout=button_count&width=125&show_faces=false&action=like&colorscheme=light&font&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);
var socialLink=e.attr(“数据链路”);
var消息=e.attr(“数据标题”);
var hashtag=e.attr(“数据hashtag”);
var html=''
+“加载Facebook”
+“正在加载Google+”
+ ''
+ ''
+ ''
+ '';
$('popupContent').html(html);
在打开弹出窗口和完全加载按钮之间有一点延迟,尤其是在互联网连接速度较慢的情况下。为了防止更快的按钮跳跃,我将它们放入div.elements中,并在CSS中定义了24px的固定高度