HTML里面的contenteditable div

时间:2012-07-04 05:59:07

标签: html contenteditable

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

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

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

在此测试:http://jsfiddle.net/mByWT/

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

修改

我现在可以得出结论,这是一般模式:

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

请参阅:http://jsfiddle.net/2CmjG/

2 个答案:

答案 0 :(得分:2)

我认为你回答了自己:)。事实上,innerHTML contenteditable div返回编码的HTML是一般模式。否则,键入<>&nbsp;或其他HTML特殊实体会破坏此编辑器。

但是,我非常确定哪些浏览器会产生不同的结果和数据,例如: IE在Fx上无效。但我从来没有发现过任何重要的事情。您也无法对innerHTML给出的数据进行编码,因为这非常棘手。

答案 1 :(得分:1)

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

但是,您可能希望清理HTML,因为<>等字符可能会混淆javascript。如果它要进入数据库或类似的东西,你想要更加清理HTML。