1

我正在使用PageDown.js像 StackOverflow 一样以 Markdown 样式制作原始 HTML。我的代码在 nodejs 中如下所示:

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

现在我需要添加rel="nofollow"到所有外部链接。不幸的是,我在 PageDown 本身看不到这种能力。

您能否建议我ref="nofollow"为所有外部链接添加属性的解决方案?

4

1 回答 1

0

如果所有链接都是外部链接,那么您可以简单地使用

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');
        }
    });
});
于 2016-06-15T10:04:35.047 回答