6

我有一个contentEditablediv,我需要在其中允许用户编辑 HTML。

我是否需要清理用户在该 div 中编写的 HTML?

我的意思是当我从那个 div 中检索 HTML 时,它已经被清理过了。例如,如果我<>在 div 中写了类似的内容,然后将其取回,我会得到&lt;&gt;.

在这里测试它:http: //jsfiddle.net/mByWT/

我的另一个问题是:这种行为是一种标准,我可以在所有浏览器中依赖它吗?

编辑

我现在可以得出结论,这是一个普遍的模式:

  • element.innerHTML返回转义的 HTML - 它转义<, >amd&但不是引号
  • element.innerTextelement.textContent返回文字 HTML 而不转义

看到这个:http: //jsfiddle.net/2CmjG/

4

2 回答 2

4

我认为您自己回答了:)。contenteditable div 返回编码 HTML 的事实innerHTML是一种通用模式。否则输入<or >or or or or &nbsp;or other HTML special entities会破坏这个编辑器。

但是,我很确定在某些极端情况下,浏览器会产生不同的结果,并且在例如 IE 上创建的数据在 Fx 上无效。但我从未观察到任何批评。您也将无法对 给出的数据进行编码innerHTML,因为那将非常棘手。

于 2012-07-04T07:56:30.447 回答
1

jQuery 被构建为与所有浏览器兼容,如果您在所有浏览器中使用您的代码,它将以相同的方式执行。

但是,您可能希望清理您的 HTML,因为字符喜欢<并且>可能会混淆 javascript。如果要访问数据库或类似的东西,您甚至想进一步清理 HTML。

于 2012-07-04T06:04:12.687 回答