动态和异步加载多个LinkedIn共享按钮

时间:2015-02-17 11:28:51

标签: javascript ajax linkedin

我有一个显示帖子缩略图的页面。帖子通过AJAX获取,过滤器允许获取不同的帖子。单击缩略图时,将在点击的帖子中心打开轮播。轮播中的每个帖子都有一个LinkedIn分享按钮。

如果加载到不可见元素中然后再加载,则链接共享按钮无法正常工作。因此我们必须在打开旋转木马时加载它们。我使用以下代码执行此操作:

$.getScript('http://platform.linkedin.com/in.js', function() { 
  $('.li-box-1').append('<script type="IN/Share" data-counter="right"></script>');
});

现在,如果我关闭旋转木马并选择一个过滤器,从而获取一组不同的帖子,然后点击其中一个,旋转木马显示没有LinkedIn分享按钮,我们在控制台中收到此警告:< / p>

duplicate in.js loaded, any parameters will be ignored

这是因为我们已经加载了LinkedIn的in.js.有谁知道怎么解决这个问题?

3 个答案:

答案 0 :(得分:4)

这是调用.js库中所需链接的代码。 我们通过检查变量IN是否为undefined来检查先前是否已加载库。并且基于我们第一次加载库,或者忽略它 这段代码会放在<header>标记的某个位置,<body>标记后面或</body>之前,不知道你的情况。

<script>
if (typeof (IN) !== 'undefined') {
  // IN.parse(); // old but still supports
  IN.init();  // reinitiating linkedin button  
} else {
  $.getScript("http://platform.linkedin.com/in.js");
}   
</script>  

或者您可以这样做:

<script>
  delete IN;
  $.getScript("http://platform.linkedin.com/in.js")
</script>

现在您将使用您的特定轮播或轮播项目放置此代码。

<script type="IN/Share" 
        data-url=" **code to generate your url** " 
        data-counter="right">
</script>

答案 1 :(得分:0)

如果你看一下你正在运行的脚本,你会发现.getScript的结果没有被加载到脚本标签或类似的东西中,而是你&#39 ;基本上执行两个单独的操作:加载脚本,然后使用type="IN/Share"创建标记。加载脚本的初始操作只需要运行一次,因为您已经发现,所以您只需要运行.append行来创建所需的动态按钮,然后调用{{1}将脚本链接到新创建的元素。

答案 2 :(得分:0)

似乎您正在做一些非常出色的编码体操,只是为了能够在LinkedIn上共享链接。为什么不尝试更简单的东西?

https://www.linkedin.com/sharing/share-offsite/?url={url}

然后,您可以超链接任何所需的内容,使用所需的CSS和JS等进行控制。

来源: Microsoft LinkedIn Share URL Documentation

例如,这对我有用:

https://www.linkedin.com/sharing/share-offsite/?url=http://www.wikipedia.org/

工作正常: