Кнопка AddThis не будет работать внутри AJAX, но будет работать нормально - PullRequest
7 голосов
/ 22 октября 2009

По сути, это то, что я делаю. Пользователь заходит на сайт, загружает "index.html" В файле index.html он автоматически загружает через AJAX «details.html» в DIV. Я добавил кнопку ДОБАВИТЬ на "details.html". Однако по какой-то причине переворачивание не работает.

Когда я захожу в файл 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>

Ответы [ 7 ]

14 голосов
/ 24 января 2010

Недавно я столкнулся с проблемами при использовании AddThis на всем сайте AJAX и смог найти пару решений для этой проблемы.

Оказывается, есть переменная, которую вы можете передать при загрузке скрипта AJAX, а также способ переинициализации скрипта, если DOM перезагружается через AJAX. Я подробно разместил полное решение в своем блоге здесь:

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 );
5 голосов
/ 28 апреля 2013

addthis.toolbox ( "addthis_toolbox");

2 голосов
/ 15 марта 2010

Работал с той же проблемой, и это решило ее для меня во всех основных браузерах (IE6 +, FF, Safari в MAC / XP):

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

2 голосов
/ 22 октября 2009

если я правильно понимаю ваш вопрос, в обратном вызове функции 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});

Я никогда не использовал live, но похоже, что он будет работать для вас, так как ваша кнопка add_this создается после $ (document) .ready ()

0 голосов
/ 17 ноября 2009

Добавьте этот фрагмент .js в .html, который вы загружаете. Замените "#atbutton" на селектор вашей кнопки.

addthis.button ( "# atbutton");
0 голосов
/ 22 октября 2009

Является ли details.html полностью соответствующей страницей? HTML, BODY, HEAD теги и т. Д.?

Если это так, я думаю, что все может быть немного странно, когда вы пытаетесь загрузить его на другую страницу. Я бы либо изменил details.html, чтобы он просто включал нужную вам разметку - или - если вам нужно, чтобы она оставалась индивидуально доступной - вы могли бы использовать jQuery для удаления необходимых битов после вызова ajax и вставлять только эту часть.

details.html

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

Index.html

$("#targetDivID").load("detail.html #details");
0 голосов
/ 22 октября 2009

Кажется, что скрипт вызывает событие onLoad javascript, и использование этого вызова ajax фактически не вызовет это событие. Вы могли бы попробовать другой виджет "поделиться этим"?

Как http://sharethis.com/#STS=g12m3ugh.21zb или предварительно загрузить эту кнопку?

Можете ли вы опубликовать немного больше истории о том, что вы делаете?

...