「Knockout.js/htmlバインディング」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | [[Knockout | + | [[Knockout]]の'''htmlバインディング'''とは、パラメーターの値に応じ、関連付けられた[[DOM]]要素内の[[HTML]]を書き換える[[Knockout/可視バインディング|可視バインディング]]のひとつである。 |
− | [[Knockout | + | [[Knockout/textバインディング|textバインディング]]とほぼ同じだが、htmlバインディングは文字列がHTMLエスケープされずに直接書き込まれる。つまり一歩間違えば重大な[[セキュリティホール]]となりうる諸刃の剣である。 |
== パラメーター == | == パラメーター == | ||
− | [[Knockout | + | [[Knockout]]は、関連付られたDOM要素内のHTML(innerHTMLプロパティ)を、パラメーターの値で上書きする。 |
− | このパラメーターが[[Knockout | + | このパラメーターが[[Knockout/observable]]の場合は、値を更新するたびにHTMLも更新する。パラメーターがobservableでない場合はバインディング適用時([[Knockout/applyBindings]]実行時)に1回だけ更新されて以降は更新されない。 |
パラメーターの値の[[型]]が数値(number型)または文字列(string型)の場合はそのものを、それ以外の場合はtoString()メソッドを実行した結果でテキストを上書きする。 | パラメーターの値の[[型]]が数値(number型)または文字列(string型)の場合はそのものを、それ以外の場合はtoString()メソッドを実行した結果でテキストを上書きする。 | ||
12行目: | 12行目: | ||
== 使用例 == | == 使用例 == | ||
=== hello world === | === hello world === | ||
− | + | 「[[hello, world]]」はこんな感じ。 | |
− | 内容自体は[[Knockout | + | 内容自体は[[Knockout/textバインディング|textバインディング]]とほぼ同じである。HTMLがエスケープされるか、されないかの違いしかない。 |
<source lang="html5"> | <source lang="html5"> | ||
46行目: | 46行目: | ||
htmlバインディングはDOM要素のinnerHTMLプロパティを使用して書き換えを行うため、使い方を誤れば[[スクリプト・インジェクション]]攻撃をうける[[セキュリティホール]]となりうるので、信頼されていないモデルの値は絶対に使用してはいけない。 | htmlバインディングはDOM要素のinnerHTMLプロパティを使用して書き換えを行うため、使い方を誤れば[[スクリプト・インジェクション]]攻撃をうける[[セキュリティホール]]となりうるので、信頼されていないモデルの値は絶対に使用してはいけない。 | ||
− | コンテンツが安全であることを保証できない場合は、[[Knockout | + | コンテンツが安全であることを保証できない場合は、[[Knockout/textバインディング|textバインディング]]を使用すること。 |
== 関連項目 == | == 関連項目 == | ||
− | * [[Knockout | + | * [[Knockout]] |
− | ** [[Knockout | + | ** [[Knockout/可視バインディング|可視バインディング]] |
== 参考文献 == | == 参考文献 == |