在instafeed.js中如何在新窗口打开链接

7
我正在使用instafeed.js在我的网站上展示最新的instagram图片。但是默认情况下,图像链接会在同一窗口中打开。以下是JS代码:https://github.com/stevenschobert/instafeed.js/blob/master/instafeed.js 更多信息:http://instafeedjs.com 我尝试使用以下方法在新窗口中打开链接:
<script>
$(function(){
  $("#instafeed a").attr("target","_blank");
});
</script>

但是这个技巧在这种情况下不起作用。 有什么解决方法吗?谢谢。

3
我以前没有使用过instafeed,但是你不能使用模板选项吗?template:'<a href="{{link}}" target="_blank"><img src="{{image}}" /></a>' - Jop
@Jop 谢谢,但我不知道为什么这个选项不起作用。最后我在JS文件中添加了 anchor.target = '_blank';,现在链接在新窗口中打开了。 - Kasra
1
@Kasra - 你永远不应该直接修改一个库的源代码文件,也不应该这样做...Steven 和 Jop 已经使用插件可用的模板选项为你提供了正确的答案。测试并确认完美运行。 - zigojacko
3个回答

12

最好的方法是使用template选项:

var feed = new Instafeed({
  template: '<a href="{{link}}" target="_blank"><img src="{{image}}" /></a>'
  // other settings...
});

你不需要直接修改源文件。

如需了解模板的工作原理,请查看模板文档。


4

我在 after 函数中更新链接。

jQuery(document).ready(function($){
  var loadButton = $('#load-more');
  var feed = new Instafeed({
    get: 'user',
    userId: xxx,
    accessToken: 'xxxx',
    limit:160,
    after: function() {
      $("#instafeed a").attr("target","_blank");
      // disable button if no more results to load
      if (!this.hasNext()) {
        loadButton.attr('disabled', 'disabled');
      }
    }
  });    

  $('#load-more').on('click', function() {
    feed.next();
  });
  feed.run();
});

0

明白了!跟随Kasra的逻辑,找到了解决方案:

在您的instafeed.js文件中,查找大约在第177行附近并添加anchor.setAttribute('target', '_blank');即可完美解决。


1
这是一个快速解决方案,但我永远不会更改或重新编辑库以避免在最新更新中丢失。 - StefGuev
你说得很对……这是一篇非常古老的文章,我无法确定当时的Instafeed版本是否具有模板选项,或者它是否与更近期的版本相同。 - Macarrao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接