[解決済み] 入力フィールドから属性を読み込むと、HTMLエンコーディングが失われる
2022-03-23 23:15:36
質問
JavaScriptを使ってhiddenフィールドから値を取り出し、テキストボックスに表示させています。隠しフィールドの値はエンコードされています。
例えば
<input id='hiddenId' type='hidden' value='chalk & cheese' />
に引き込まれる。
<input type='text' value='chalk & cheese' />
jQuery を使って hidden フィールドから値を取得します (この時点でエンコーディングが分からなくなります)。
$('#hiddenId').attr('value')
問題は、私が読んだときに
chalk & cheese
を使用すると、JavaScript のエンコーディングが失われるようです。私は、値が
chalk & cheese
. 私はリテラル
amp;
を保持する。
文字列をHTMLエンコードするJavaScriptのライブラリやjQueryのメソッドはありますか?
どのように解決するのですか?
EDITです。
この回答はかなり前に投稿されたものであり
htmlDecode
関数には XSS 脆弱性があります。このため、一時的な要素を
div
から
textarea
XSSの可能性を減らすことができます。しかし、最近では、DOMParser APIを使うことをお勧めします。
他の回答者
.
こんな機能を使っています。
function htmlEncode(value){
// Create a in-memory element, set its inner text (which is automatically encoded)
// Then grab the encoded contents back out. The element never exists on the DOM.
return $('<textarea/>').text(value).html();
}
function htmlDecode(value){
return $('<textarea/>').html(value).text();
}
基本的にtextarea要素はメモリ上に作成されますが、ドキュメントに追記されることはありません。
について
htmlEncode
関数を設定しました。
innerText
を取得し、エンコードされた
innerHTML
の上にある
htmlDecode
関数を設定しました。
innerHTML
要素の値と
innerText
が取得される。
実行例を確認する こちら .
関連
-
vueディレクティブv-bindの使用と注意点
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] HTMLページからのリダイレクト
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] AngularJSのコントローラからビューにHTMLを挿入する
-
[解決済み] HTMLフォームのSELECTタグ/入力の読み取り専用化
-
[解決済み] HTMLのテキスト入力でクリックするとすべてのテキストが選択される
-
[解決済み】HTMLのテキスト入力で数値入力しかできない。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vueディレクティブv-bindの使用と注意点
-
vueの補間表現とv-textディレクティブの違いについて
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] 文字列中のある文字のすべてのインスタンスを置換する最速の方法 [重複]。
-
[解決済み] jQueryでtextareaの値を設定する
-
[解決済み】JavaScriptでHTMLエンティティをUnescapeする?