jQueryでHTMLタグを剥がすには?
2023-08-07 07:30:05
質問
文字列からHTMLタグを削除したい。例えば、以下のような文字列があるとします。
<p> example ive got a string</P>
を削除する関数はどのように書けばよいのでしょうか?
<p><p>
を削除して、単に"example ive got a string"を返す関数を書くにはどうしたらよいでしょうか?
どのように解決するのですか?
この 最も安全な方法 は、ブラウザのTextNodeがコンテンツを正しくエスケープすることに依存することです。以下はその例です。
function encodeHTML(dirtyString) {
var container = document.createElement('div');
var text = document.createTextNode(dirtyString);
container.appendChild(text);
return container.innerHTML; // innerHTML will be a xss safe string
}
document.write( encodeHTML('<p>some <span>content</span></p>') );
document.write( encodeHTML('<script><p>some <span>content</span></p>') );
ここで覚えておきたいのは、ブラウザがTextNodeの特殊文字をエスケープするのは、htmlの文字列(
innerHTML
,
outerHTML
). それに比べて、テキスト値へのアクセスは (
innerText
,
textContent
) は生の文字列を生成します。つまり、安全ではなく、XSSを含む可能性があります。
もしあなたが
jQuery
を使用すると
.text()
を使用することは安全であり、後方互換性があります。この質問に対する他の回答を参照してください。
は 最も簡単な方法 ブラウザ <= Internet Explorer 8 で作業する場合、純粋な JavaScript での最も簡単な方法です。
string.replace(/(<([^>]+)>)/ig,"");
しかし、正規表現でHTMLを解析することにはいくつかの問題があるので、これではあまり良いセキュリティは得られません。また、これはHTMLの文字だけを対象にしているので、完全にxssセーフというわけではありません。
関連
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] jQueryを使用しない$(document).ready相当
-
[解決済み] HTMLマークアップのどこに<script>タグを記述すればよいですか?
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] セレクトした要素の外側のHTMLを取得する
-
[解決済み] テキストからHTMLを取り除く JavaScript
-
[解決済み] jQueryでチェックボックスの値を取得する
-
[解決済み] Twitter Bootstrapのモーダルクローズに関数をバインドする
-
[解決済み] jQueryを使用してCSSのdisplay noneまたはblockプロパティを変更するにはどうすればよいですか?
-
[解決済み] jQueryを使用してDropDownListの値を設定するにはどうすればよいですか?
-
[解決済み] jQuery OR Selector?
-
[解決済み】jQueryのテンプレートエンジン【終了しました
-
[解決済み】JavaScriptで文字列からHTMLタグを取り除くには?[重複している]をクリックします。