为什么我不能使外部链接成为nofollow?

时间:2019-04-15 07:29:18

标签: javascript

我正在努力实现两件事:

1)我想使页面上的所有外部链接在新标签页中打开

2)同时,我希望所有此类链接都为nofollow。

使用下面的代码,我可以实现1),但似乎无法实现2)工作

if (document.readyState != 'loading') {
    fn();
  } else if (document.addEventListener) {
    document.addEventListener('DOMContentLoaded', fn);
  } else {
    document.attachEvent('onreadystatechange', function() {
      if (document.readyState != 'loading')
        fn();
    });
  }
}

ready(function() {

  var website = window.location.hostname;

  var internalLinkRegex = new RegExp('^((((http:\\/\\/|https:\\/\\/)(www\\.)?)?'
                                     + website
                                     + ')|(localhost:\\d{4})|(\\/.*))(\\/.*)?$', '');

  var anchorEls = document.querySelectorAll('a');
  var anchorElsLength = anchorEls.length;

  for (var i = 0; i < anchorElsLength; i++) {
    var anchorEl = anchorEls[i];
    var href = anchorEl.getAttribute('href');

    if (!internalLinkRegex.test(href)) {
      anchorEl.setAttribute('target', '_blank', 'rel','nofollow');
    }
  }
});

我希望我网站上的所有外部链接都可以在外部窗口中打开,并且必须遵循。另外,我想坚持使用Javascript。

谢谢。

1 个答案:

答案 0 :(得分:1)

根据this MDN网络文档,setAttribute()仅接受一个名称和一个值。

所以不是

anchorEl.setAttribute('target', '_blank', 'rel','nofollow');

尝试

anchorEl.setAttribute('target', '_blank');
anchorEl.setAttribute('rel','nofollow');