AddThis按钮在AJAX中不起作用,但会正常工作

时间:2009-10-21 21:41:56

标签: javascript jquery ajax addthis

基本上,这就是我正在做的事情。 用户访问网站,加载“index.html” 在index.html中,它会通过AJAX自动将“details.html”加载到DIV中。 我在“details.html”上放了一个ADDTHIS按钮。但是,出于某种原因,翻转不起作用。

当我在浏览器中访问details.html时,翻转工作正常。我猜这是因为AJAX?

<a class="addthis_button"  href="http://www.addthis.com/bookmark.php?v=250&amp;pub=xa-4adf7e45288f5b21">
<img src="http://s7.addthis.com/static/btn/sm-share-en.gif" width="83" height="16" alt="Bookmark and Share" style="border:0;margin-top:16px;"/></a>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pub=xa-4adf7e45288f5b21"></script>

8 个答案:

答案 0 :(得分:14)

我最近遇到了在所有AJAX网站上使用AddThis的问题,并且能够针对这个问题提出几个解决方案。

事实证明,在加载AJAX脚本时可以传递一个变量,以及在通过AJAX重新加载DOM时重新初始化脚本的方法。 我已经在我的博客上详细发布了完整的解决方案:

http://joecurlee.com/2010/01/21/how-to-use-addthis-with-ajax-and-overflowauto/

简单总结一下,解决方案是加载附加了变量domready = 1的AddThis,并通过删除初始加载然后动态重新加载脚本来重新初始化脚本:

var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1';
if (window.addthis){
    window.addthis = null;
}
$.getScript( script );

答案 1 :(得分:5)

addthis.toolbox( “addthis_toolbox。”);

答案 2 :(得分:2)

如果我理解你的问题,在ajax函数的回调中,将翻转绑定到add-this按钮。

 $.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(){
     $('.addthis_button').hover(
       function(){
         //do mouse over
       },function(){
         //do mouse out
     });
   }
 });

您也可以尝试

$('.addthis_button').live('mouseover',function(){//do mouseover});
$('.addthis_button').live('mouseout',function(){//do mouseout});

我从来没有使用过直播,但似乎它会对你有用,因为你的add_this按钮是在$(文件)之后创建的.ready()

答案 3 :(得分:2)

遇到同样的问题,这在所有主流浏览器中解决了它(IE6 +,FF,MAC / XP中的Safari):

http://joecurlee.com/2010/01/21/how-to-use-addthis-with-ajax-and-overflowauto/comment-page-1/#comment-24

答案 4 :(得分:0)

似乎脚本正在调用javascript的onLoad事件,并且使用此ajax调用实际上不会触发该事件。你可以尝试其他“分享这个”小部件吗?

http://sharethis.com/#STS=g12m3ugh.21zb 或预先加载该按钮?

你能发布一些关于你在做什么的故事吗?

答案 5 :(得分:0)

details.html是否是一个完全合规的页面? HTML,BODY,HEAD标签等?

如果是这样,我认为当你试图将它加载到另一个页面时,事情会变得棘手。我要么更改details.html以仅包含您需要的准系统标记 - 或者 - 如果您需要它仍然可以单独访问 - 您可以使用jQuery在ajax调用之后去除所需的位并仅注入该部分。 / p>

Details.html

<html>
<head>
</head>
<body>
    <div id="details">
    The needy bits.......
    </div>
</body>
</html>

的index.html

$("#targetDivID").load("detail.html #details");

答案 6 :(得分:0)

将此.js片段添加到您正在加载的.html中。用按钮的选择器替换“#atbutton”。

addthis.button( “#atbutton”);

答案 7 :(得分:0)

我有同样的问题。使用以下代码对其进行了修复。我希望它也能为您解决。

原始方法:

    var script = 'http://s7.addthis.com/js/300/addthis_widget.js?domready=1';
    if (window.addthis){
        window.addthis = null;
    }
    $.getScript( script );

新方法:

<script>
var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1';
if (window.addthis) {
    window.addthis = null;
    window._adr = null;
    window._atc = null;
    window._atd = null;
    window._ate = null;
    window._atr = null;
    window._atw = null;
}
$.getScript(script);
</script>

在AJAX REQUEST中,您可以这样使用:-

$.ajax({
    url:Url,
    type: 'POST',
    cache: false,
    success: function(res){
        var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1';
        if (window.addthis) {
            window.addthis = null;
            window._adr = null;
            window._atc = null;
            window._atd = null;
            window._ate = null;
            window._atr = null;
            window._atw = null;
        }
        $.getScript(script);
        // your custom code
    }
});