Extjs 表单和文本区域无法处理带有 angular 括号('<>')的输入。奇怪的行为,UI 刚刚死了

Extjs form and text area cannot handle input with angular brackets('<>'). Weird behavior, the UI just dies

我有一个 extjs 表单和一个文本字段。

当向表单内的文本字段提供输入并按下 'Save' 按钮时,该值将传递到服务器端并完成一些操作 它。

一切正常,直到我在文本字段中输入如下内容:

使用此输入,当按下 'Save' 按钮时,整个 UI 就会消失。事实上,只要输入包含 angular 括号('<' 或 '>'),就会发生同样的事情。 我的 'Save' 按钮处理程序的第一行看起来像这样:

var form = Ext.ComponentQuery.query('#formPanel')[0];

我在调试时看到,控制永远不会超过这一行。明显有东西明显坏了。

还有一个更奇怪的事情,当我试图在此处的Whosebug编辑器中编写该输入时,它只是删除了angular括号,这是为输入张贴图片的原因。

我确实遗漏了一些东西。

最重要的是,不仅 UI 死了,它还会注销会话,这让我的情况变得更糟。

我正在使用 extjs 6.0.2,如果有帮助的话。

有人可以帮我解决这个问题吗?

ComponentQuery 解析整个 DOM 并且它中断,因为它将 字符串解释为 HTML 标记。 (请注意,显示括号是因为我没有写实际字符 - 它们是 HTML 编码的)

您应该通过其他方式获取您的组件。我建议使用 references,因为它只搜索视图所有者的引用缓存。而且,它也快了很多。

有关详细信息,请参阅此 link from the docs。顺便说一句,lookupReference() 函数也可以在父容器上调用。

除了这些更改之外,您应该始终转义您的输入以避免像您这样的问题,最重要的是:避免代码注入。例如,您可以使用 htmlEncode() 函数。