contentEditable在XML /复合文档中的节点上?

时间:2009-04-03 13:32:34

标签: firefox browser webkit contenteditable

我有一个XML文档,我正在Web浏览器中显示,并附有样式表:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/css" href="abc.css"?>
<myxml xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <para>I wish i was editable</para>
    <xhtml:script type="text/javascript" src="abc.js"/>
</myxml>

使用xhtml名称空间声明和xhtml:script标记,我可以执行javascript。

我想要做的是使此文档内容中的任意非XHTML元素可编辑。 (实际上,它们将位于另一个命名空间中)

即使我明确添加@ contentEditable =“true”(即不使用Javascript),内容实际上也不可编辑(在Firefox 3.0.4中)。

是否可以在任何当前浏览器中编辑它? (在{XHTML 1.0 Transitional doc}中<div contentEditable="true"&gt;编辑我</div&gt;我没有问题

我甚至无法编辑本文档中的xhtml:div(在Firefox中);如果我能做到这一点,那可能会提供一条前进的道路。

3 个答案:

答案 0 :(得分:1)

在Firefox 3中,@ content-editable =“true”仅使相关元素可编辑 内容类型是text / html(如果本地文件名以.html结尾,也会发生这种情况)

它不适用于内容类型app / xhtml + xml或text / xml(以.xhtml或.xml结尾的本地文件名)

我已为此记录了一项增强功能:https://bugzilla.mozilla.org/show_bug.cgi?id=486931

答案 1 :(得分:0)

如果我使用此doctype,则contentEditable适用于在html / xhtml之外的元素上(在Firefox和Chrome中测试过):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">

和.html文件扩展名(而不是.xml)。

我根本不需要包含任何html元素(例如head,body,div,p)。

css未应用(如果我的xml在命名空间中,我认为这是合理的,给定doctype!)。

不是一个优雅的解决方案。

答案 2 :(得分:0)

Firefox是为数不多的严格执行XHTML规范的浏览器之一。因此,要使元素可编辑,您必须将contenteditable属性指定为true。请注意,整个属性名称是小写的。在您的示例中,可编辑的第一个“E”是大写的。

应该提到的另一个怪癖是IE(6,7,8)恰恰相反。要使元素在IE中可编辑,您必须完全添加contentEditable="true"。出于某种原因,contenteditable="true"(以及大写的任何其他变化)都不起作用。