2

インライン編集中のjqgridsサイトでzbacsiによるコメントを見つけました。 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#how_is_the_data_organized

"zbacsi, 2010/08/02 20:23 特殊文字のエスケープ バグがあります。アラート ('hello') をフィールドに挿入してみてください。一般的なテキストとして表示されるはずですが、実行されました..."

以下のバージョンの jqGrid と jQuery を使用して、自分のグリッド設定でこの問題を再現できました。

jqGrid バージョン - > 4.4.4、jQuery バージョン - > 1.7.1。

これは、次の場所にある jqGrid のインライン編集デモ ページでも再現できます。

http://www.trirand.com/blog/jqgrid/jqgrid.html

そこに移動したら:

Functionality -> Formatter Actions をクリックし、行の編集を開始します。

「メモ」というラベルの付いた列の内側に値を挿入します。<script>alert('hi')</script>

Enter キーを押すか、[保存] アイコンをクリックします。

alert('hi') は、'Notes' を含むのではなく実行されます。<script>alert('hi')</script>

追加情報をいただければ幸いです。

4

1 に答える 1

1

バグではありません。使用オプションで問題を解決できます

autoencode: true

個人的には、すべてのグリッドでこのオプションを使用することを強くお勧めします。

jqGrid には多くのオプションがあります。個人的には、一部のオプションのデフォルト値 (ページドキュメントの「デフォルト」列の値を参照) が最適ではないと感じています。そのようなオプションの 1 つはautoencode、デフォルト値が であることですfalse。これは、グリッド セルを埋めるために使用されるすべてのデータがHTML コード フラグメントとして解釈されることを意味します。スクリプトは唯一の問題ですが、 のようなテキストを挿入すると、a>b実際</tr><--ページが壊れる可能性があります。

jqGrid を拡張することで、デフォルトを上書きできます$.jgrid.defaults。そのため、すべての HTML ページに、独自のデフォルト設定で JS ファイルを含めます。ファイルには次のような行があります

$.extend($.jgrid.defaults, {
    autoencode: true,
    gridview: true,
    height: "auto"
    datatype: "json",
    loadui: 'block',
    ...
});
于 2013-05-03T21:57:28.890 に答える