Sharethis按钮不适用于通过ajax加载的页面

时间:2010-09-22 10:59:44

标签: sharethis

我正在尝试在通过ajax加载的页面上使用sharethis按钮。 按钮不显示。请帮忙。

此致 的Pankaj

10 个答案:

答案 0 :(得分:43)

将新内容添加到dom后,请致电

stButtons.locateElements();

// or if you want to be a bit defensive about whether the lib has been
// loaded or not:
if (window.stButtons){stButtons.locateElements();} // Parse ShareThis markup

Article another another

答案 1 :(得分:8)

2017年9月更新回答

stButtons对象不再存在,现在可以使用

window.__sharethis__.initialize()

重新初始化按钮

答案 2 :(得分:3)

此解决方案也适用于基于NodeJS的框架,如Meteor。

stButtons.locateElements();
在模板的渲染回调中需要

,以确保shareThis按钮将出现在页面重定向上。

答案 3 :(得分:2)

我遇到了与sharethis和Ajax分页相同的问题。 在Ajax加载的帖子之后没有显示按钮,所以我已经搜索并找到了这个。 我刚刚在Ajax stButtons.locateElements();

上添加了函数success:

类似于success: stButtons.locateElements();

希望这对像我这样的人有所帮助。

由于 Ibnul

答案 4 :(得分:1)

对于新的API,以下解决方案为我工作

if (__sharethis__ && __sharethis__.config) {
    __sharethis__.init(__sharethis__.config);
}

加载ajax内容后添加此代码。

答案 5 :(得分:1)

执行此操作:

window.__sharethis__.load('inline-share-buttons', config);

并使用javascript配置按钮。

答案 6 :(得分:0)

在drupal中,您可以通过添加以下代码来实现此目的

(function($){
 Drupal.behaviors.osShareThis = {
attach: function(context, settings) {
  stLight.options({
    publisher: settings.publisherId
  });
  // In case we're being attached after new content was placed via Ajax,
  // force ShareThis to create the new buttons.
  stButtons.locateElements();
}
};
});

答案 7 :(得分:0)

更新了03/2020年答案

如上述《猿》的答案中所述:https://stackoverflow.com/a/45958039/1172189

window.__sharethis__.initialize()

这仍然有效,但是如果您的URL在AJAX请求上发生更改,则会遇到一个问题,您需要确保将要共享的URL设置为在线共享div上的数据属性(data-url)。您还可以使用data-title属性更新标题。

<div class="sharethis-inline-share-buttons" data-url="http://sharethis.com" data-title="Sharing is great!"></div>

用例:

我正在使用WordPress / PHP函数根据查询字符串生成特定内容。如果您未在ShareThis div上设置data-url属性,则无论AJAX请求上的URL更新如何,ShareThis都会保存被单击以共享的第一个URL。

答案 8 :(得分:0)

以下内容应与当前的ShareThis javascript一起使用。如果未加载sharethis js,则脚本将对其进行加载。如果已经加载了ShareThis,则会使用当前URL重新初始化ShareThis,以便它可以在通过Ajax加载的页面上使用。在Vue组件上与mounted方法一起使用时,对我来说工作正常。

const st = window.__sharethis__
if (!st) {
  const script = document.createElement('script')
  script.src =
    'https://platform-api.sharethis.com/js/sharethis.js#property=<your_property_id>&product=sop'
  document.body.appendChild(script)
} else if (typeof st.initialize === 'function') {
  st.href = window.location.href
  st.initialize()
}

确保在脚本src url中使用ShareThis提供的财产ID。

答案 9 :(得分:-3)

我在其中一个addThis论坛上找到了以下解决方案,它对我很有帮助。 我把这个函数称为回调我的ajax调用。这有助于

<script type="text/javascript">
       function ReinitializeAddThis(){
      if (window.addthis){
         window.addthis.ost = 0;
         window.addthis.ready();
      }
   }
...
$('#camps-slide .results').load(loc+suffix, function() {ReinitializeAddThis();});
</script>