我正在使用PageDown.js以像StackOverflow那样的markdown风格制作原始HTML。我的代码在nodejs中如下所示:
var saneConv require('./pagedown/Markdown.Sanitizer'),
resultHTML = saneConv.makeHtml('[raw html string]');
现在我需要将rel="nofollow"
添加到所有外部链接。不幸的是,我无法在PageDown中看到这种能力。
您可以向我建议一个解决方案,将ref="nofollow"
属性添加到所有外部链接吗?
答案 0 :(得分: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');
}
});
});