2016-04-01 11 views
2

私の角型アプリでは、任意の/すべてのタグを取り除くために入力をサニタイズしたいので、ユーザーが<h1>superman</h1>を入力してもhtmlタグは取り除かれます。今私は、このドキュメントのページにしかしhttps://docs.angularjs.org/api/ngSanitize/service/ $約ngSanitizeを読んだ角型 - 入力からすべてのタグを取り除く

は、ホワイトリストに言及サニタイズので、私はそれは角度が<h1>のようなものを受け入れることを前提としています。

私の理解は正しいですか?

もしそうなら、入力から任意のタグとすべてのタグを強制的に削除するにはどうすればよいですか?

ありがとうございました。

答えて

5

ngSanitizeは、単にHTMLを安全にするため、javascriptを内部で実行することはできません。おそらく単純なjavascript replaceメソッドを正規表現で使いたいと思うでしょう。以下のような

何か:これは、任意のXMLタグだけでなく、HTMLを削除します

var str = '<h1>superman</h1>'; 
str.replace(/<[^>]+>/g, ''); 

+0

クール - 意味があります。だから、Angularはなぜこのような何かを箱から出してくれないのですか?ユーザー入力フィールドのようなものは重要ではありませんが、実際にhtmlを入力するとは思わないでしょうか? – userMod2

+0

彼らは、ユーザーがしたいことがあるすべてを実装することはできません。だから彼らはフィルターを持っている。必要に応じて独自のカスタムフィルタを実装できます。 – rgvassar

0

は、それは簡単なJavaScriptで行うことができます https://plnkr.co/edit/F9K3sekUQUJPBUts8Jdw?p=preview

var strip = function() { 
    var tmp = document.createElement("DIV"); 
    tmp.innerHTML = $scope.strip; // assuming text box is using "strip" for ng-model 
    return tmp.textContent || tmp.innerText || ""; 
}; 

このplnkr例を参照してください。 ngSanitizeまたはその他の特定のコードangularjsは不要です。

+0

ありがとう - 私はこれがどのように動作するか見ることができますが、上記のために行くでしょう。再度ありがとう、ありがとう – userMod2

関連する問題