Добавляем rel="nofollow" к внешним ссылкам + target="_blank" с исключениями некоторых доменов jQuery


18:03, 19/03/2018

Исходя из правил разметки External links можно выделить следующие особенности их оформления:

  1. C явным указанием на протокол: http:// или https://
    Google
    Google
  2. Без явного указания: //
    Google

Далее почта mailto: и атрибут target с параметром _blank target="_blank".

Задача: необходимо привести внешние ссылки, так же ссылки на электронную почту к следующему виду:

site.com
т.е. добавить к ним два атрибута. Но существуют ряд доменов — исключений, к которым данное правило применяться не должно.

Решение:

// External & email links
var linksContainer = "#comments .content";
// var linksContainer = ".node";

$(linksContainer + " " + "a[href^='http://'], a[href^='https://'], a[href^='mailto:'], a[href^='//']").each(function () {
    // Excluded domains
    var excludes = [
    'site.ru',
    'site2.tv',
    'site-3.com',
    'facebook.com/someaddress',
    'vk.com/someaddress',
    'twitter.com/someaddress'
    ];

    for(i = 0; i <  excludes.length; i++) {
    if(this.href.indexOf(excludes[i]) != -1) {
    return true;
    }
    }

    if(this.href.indexOf(location.hostname) == -1) {
    $(this).click(function() { return true; });
    $(this).attr({
    rel: "nofollow",
    target: "_blank",
    title: "Open in new Tab"
    });
    $(this).css('text-decoration', 'line-through'); // tmp
    $(this).click();
    }
})
// end External & email links

See the Pen myWoxq by DeN (@m5studio) on CodePen.



Комментарии