2

文字列変数に HTML コードが含まれているかどうかを認識する JavaScript 関数はありますか? innerHTML を使用していて、ユーザーがそのようなものを送信した場合<img src='link'>、文字列ではなく実際の画像が表示されるため、このケースは避けたいと思います...説明したいと思います ありがとう!

4

2 に答える 2

2

3 つの非常に特殊な文字を置き換えるだけです:
&: グリフ表記に使用
<: html タグの開き括弧
>: html タグの閉じ括弧

function make_safe(input) {
    return input.replace("&", "&amp;").replace(/(<?)([^<>]*)(>?)/g, function (a,b,c,d) {
        if ((b+c+d).toLowerCase() === "<br>") return "<br>";

        if (b === "<") b = "&lt;";
        if (b === ">") b = "&gt;";

        if (d === "<") d = "&lt;";
        if (d === ">") d = "&gt;";

        return b+c+d;
    }).replace(/\r?\n/g,"<br>");
}

// example:
mydiv.innerHTML = make_safe('<img src="/pic.jpg">');



\r\n が改行になり、<br>タグが保持されるように少し魔法をかけました

于 2012-11-12T17:10:55.640 に答える
1

あまり。HTMLとHTMLについて話しているテキストの違いを伝えることは簡単な問題ではありません。

テキスト入力を期待している場合は、HTMLではなくテキストを処理してください。使用しないでくださいinnerHTML、使用createTextNodeしてくださいappendChild/ insertBefore

于 2012-11-12T17:08:54.813 に答える