我正在尝试在通过ajax加载的页面上使用sharethis按钮。 按钮不显示。请帮忙。
此致 的Pankaj
答案 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
答案 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>