我有一个contentEditable
div,我需要在其中允许用户编辑HTML。
我是否需要清理用户在div中写入的HTML?
我的意思是当我从该div中检索HTML时,它已经被清理了。例如,如果我在div中写了类似<>
的内容,然后将其检索回来,我会得到<>
。
在此测试:http://jsfiddle.net/mByWT/
我的另一个问题是:这种行为是标准的,我可以在所有浏览器中依赖它吗?
修改
我现在可以得出结论,这是一般模式:
element.innerHTML
会返回转义的HTML - 它会转移<
,>
amd &
但不会引用element.innerText
和element.textContent
返回文字HTML而不转义答案 0 :(得分:2)
我认为你回答了自己:)。事实上,innerHTML
contenteditable div返回编码的HTML是一般模式。否则,键入<
或>
或
或其他HTML特殊实体会破坏此编辑器。
但是,我非常确定哪些浏览器会产生不同的结果和数据,例如: IE在Fx上无效。但我从来没有发现过任何重要的事情。您也无法对innerHTML
给出的数据进行编码,因为这非常棘手。
答案 1 :(得分:1)
构建jQuery是为了与所有浏览器兼容,如果你在所有浏览器中使用你的代码,它将以相同的方式执行。
但是,您可能希望清理HTML,因为<
和>
等字符可能会混淆javascript。如果它要进入数据库或类似的东西,你想要更加清理HTML。