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

在那里导航到:

功能 -> 格式化程序操作并开始编辑一行。

在标有“注释”的列内插入值:<script>alert('hi')</script>

按回车键或单击“保存”图标。

alert('hi') 被执行而不是 'Notes' 包含<script>alert('hi')</script>

任何额外的信息将不胜感激,谢谢。

4

1 回答 1

1

这不是一个错误。您可以通过使用选项解决问题

autoencode: true

我个人强烈建议您在所有网格中使用该选项。

jqGrid 有很多选择。我个人发现某些选项的默认值(请参阅页面文档的“默认”列中的值)不是最佳值。此类选项之一是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 回答