Как добавить атрибут rel="nofollow" для внешних ссылок в PageDown.js?

Я использую PageDown.js для создания необработанного HTML в стиле уценки, как это делает Stackru. Мой код выглядит следующим образом в nodejs:

var saneConv require('./pagedown/Markdown.Sanitizer'),
    resultHTML = saneConv.makeHtml('[raw html string]');

Теперь мне нужно добавить rel="nofollow" на все внешние ссылки. К сожалению, я не вижу этой способности в самой PageDown.

Подскажите пожалуйста решение для добавления ref="nofollow" приписать все внешние ссылки?

1 ответ

Если все ссылки являются внешними, то вы можете просто использовать

resultHTML = resultHTML.replace('<a ', '<a rel="nofollow" ');

или в Markdown.Converter.js есть функция writeAnchorTag, которую вы можете изменить, чтобы сделать то, что вам нужно.

Обновить

var jsdom = require("jsdom");
var fs = require("fs");
var jquery = fs.readFileSync("./path/to/jquery.js", "utf-8");

var saneConv = require('./pagedown/Markdown.Sanitizer'),
    resultHTML = saneConv.makeHtml('[raw html string]');

jsdom.env(resultHTML, [jquery], function(err, window) {
    var $ = window.$;

    $("a").each(function() {
        var $a = $(this);
        var href = $a.attr('href');

        // figure out if href is external or internal
        // let's say if href doesn't contain specific domain it's external so add rel=nofollow
        if (href.indexOf('example.com') < 0 || href.indexOf('example2.com') < 0) {
            // it's external, let's add rel=nofollow
            $a.attr('rel', 'nofollow');
        }
    });
});
Другие вопросы по тегам