17

我正在尝试动态更改 addthis 发送的 URL。当用户更改元素时,它会更新包含自定义 url 的文本区域,以便他们可以返回到该 url 并继续/查看他们的工作。

我正在创建一个 addthis 按钮(来自他们的 API 文档):

var addthis_share = {url:"http://www.johndoe.com"}
$(document).ready(function(){
    var tbx = document.getElementById("toolbox"),
    svcs = {email: 'Email', print: 'Print', facebook: 'Facebook', expanded: 'More'};
    for (var s in svcs) {
        tbx.innerHTML += '<a class="addthis_button_'+s+'">'+svcs[s]+'</a>';
    }
    addthis.toolbox("#toolbox");
});

然后,当更新 url 时,我尝试更新 addthis 共享 URL,如下所示:

function updateURL(){
    ...get some variables here and generate a new url
    var newURL="http://the.url.i.want.to.share.com";
    $('#tagUrl').val(newURL);
    //addthis_share = {url:newURL}
    addthis_share = {url:newURL}
    addthis.toolbox("#toolbox");
} 

原始按钮正在生成并包含正确的 url,但是当 url 更新函数执行时 addthis 共享 url 没有得到更新。如何强制它更新 addthis url?

4

7 回答 7

25

如果您想在加载 html 后更改 addthis url(在 ajax 或某些用户事件的情况下),请使用以下 hack 。Addthis apis 像在 [09/04/13 11:42:24 AM]阳光明媚的 jhunjhunwala 上一样被破坏:

addthis.update('share', 'url', 'http://www.sourcen.com'); 
addthis.url = "http://www.sourcen.com";                
addthis.toolbox(".addthis_toolbox");

http://www.sourcen.com ---> 新网址

于 2013-04-09T06:20:01.393 回答
16

就这么简单:

addthis.update('share', 'url', "http://www.example.com");
addthis.update('share', 'title', "Example Domain Title");
addthis.update('share', 'description', "Hello, I am a description");

干杯,加里

于 2014-01-17T01:50:26.767 回答
1

自定义按钮:

<a class="addthis_button_compact" >
   <img src="./images/share.png" width="36" height="36" border="0" alt="Share" />
</a>

头部:

<meta property="og:title" content="YOUR TITLE" />
<meta property="og:description" content="YOUR DESCRIPTION" />
<meta property="og:image" content="YOUR IMAGE URL" />

正文部分:就我而言,我使用的是 php,我像这样设置正文属性。

<body
      data-url="<?php echo basename($_SERVER['REQUEST_URI']); ?>"
      data-title="<?php echo $info->record_info->brand; ?>"
      data-description="<?php echo $info->record_info->description; ?>"
      data-media="<?php echo ./uploads/logos/<?php echo $info->record_info->logo; ?>"
>

动态更新内容(JS 部分):

<script>
    addthis.update('share', 'url', $('body').data('url')); // will set the URL
    addthis.update('share', 'title', $('body').data('title')); // will set the title
    addthis.update('share', 'description', $('body').data('description')); // will set the description
    addthis.update('share', 'media', $('body').data('media')); // will set the image if you are sharing
</script>
于 2017-05-25T11:20:34.900 回答
0

AddThis 提供 addthis.update("share", "url", value) 函数(但它在 IE8 中是一个 bug 函数);试试这个:

for(var i = 0; i < addthis.links.length; i++){
    addthis.links[i].share.url= "new url";
}
于 2013-05-03T18:42:19.217 回答
0
<span id="share-obj" addthis:url="" addthis:title=""></span>

<script type="text/javascript">
    var shareConfig = {url: '', title: ''};

    addthis.button('#share-obj', {}, shareConfig);

    addthis.addEventListener('addthis.menu.open', function(event){
        if ( ! event.data.element.isSameNode($('#share-obj')[0])) {
            return;
        }

        event.data.share.title = shareConfig.title;
        event.data.share.url = shareConfig.url;
    });

    // in updateURL() or any other place during runtime...
    function updateURL() {
        shareConfig.url = 'http://different.url';
        shareConfig.title = 'Title changed dynamically...';
    }
</script>

我使用了一个全局变量shareConfig来跟踪 URL 和标题配置。我在网页中有多个 addthis 按钮,每个按钮共享不同的内容。因此我添加了一个isSameNode以确保我只更新我想要的按钮。

虽然 URL 和标题是动态更改的,但addthis:urladdthis:title属性必须存在于按钮 ( <span>) 中,否则将不起作用。

于 2013-11-03T16:29:21.453 回答
0

只是现在工作

window.addthis.layers.refresh('new_url', 'new_title');

应该不存在其他配置(如 dom 属性)应该不存在

于 2020-09-04T13:50:31.200 回答
0

Step-1: 准备要加载其他 HTML 的 ajax 内容;

<div class="addthis_sharing_toolbox-CUSTOM" data-url="<?php my_dynamic_link(); ?>" data-title="<?php my_dynamic_title(); ?>">
    <a class="addthis_button_email" style="cursor:pointer"></a>
    <a class="addthis_button_facebook" style="cursor:pointer"></a>
    <a class="addthis_button_twitter" style="cursor:pointer"></a>
    <a class="addthis_button_linkedin" style="cursor:pointer"></a>
</div>

第 2 步:准备我的 fancybox ajax 设置;

$('.popUpBtn').fancybox({
    //....other fancybox settings can go here...
    //....
    afterShow   : function(current, previous){
        //addthis.init();
        addthis.update('share', 'url', $('.fancybox-inner .addthis_sharing_toolbox-CUSTOM').data('url'));
        addthis.update('share', 'title', $('.fancybox-inner .addthis_sharing_toolbox-CUSTOM').data('title'));
        //addthis.update('share', 'description', "Hello, I am a description");
        addthis.toolbox('.addthis_sharing_toolbox-CUSTOM'); //-->Important: this selector should not be anything from the addthis settings page; We can choose any other names like normal selectors;
    }
});

“afterShow()”函数中的上述行很重要,请注意;

于 2015-08-24T15:30:47.183 回答