1

私はPageDown.jsを使用して、StackOverflow のように生の 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 に答える