8

基本上,这就是我正在做的。用户访问站点,加载“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>
4

8 回答 8

14

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

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

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

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

var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1';
if (window.addthis){
    window.addthis = null;
}
$.getScript( script );
于 2010-01-24T15:47:47.153 回答
5

addthis.toolbox(".addthis_toolbox");

于 2013-04-28T13:35:51.773 回答
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 按钮是在 $(document).ready() 之后创建的

于 2009-10-22T07:20:02.273 回答
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

于 2010-03-15T17:53:32.397 回答
1

我有同样的问题。使用以下代码修复它。我希望这也能为你解决。

原始方法:

    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
    }
});
于 2020-05-28T19:45:29.917 回答
0

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

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

你能发布更多关于你在做什么的故事吗?

于 2009-10-21T21:45:37.490 回答
0

details.html 本身是一个完全兼容的页面吗?HTML、BODY、HEAD 标签等?

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

详细信息.html

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

索引.html

$("#targetDivID").load("detail.html #details");
于 2009-10-21T23:58:59.090 回答
0

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

addthis.button("#atbutton");
于 2009-11-17T02:44:30.843 回答