contentEditable на узлах в XML / составном документе? - PullRequest
0 голосов
/ 03 апреля 2009

У меня есть документ XML, который я отображаю в веб-браузере, с прикрепленной таблицей стилей:

<?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).

Можно ли редактировать его в любом из текущих браузеров? (У меня не было проблем с <div contentEditable="true"> Изменить меня </div> в переходном документе XHTML 1.0)

Я даже не могу отредактировать xhtml: div в этом документе (в Firefox); если бы я мог это сделать, это могло бы предложить путь вперед.

Ответы [ 3 ]

1 голос
/ 07 апреля 2009

В Firefox 3, @ content-editable = "true" делает соответствующий элемент редактируемым, только если тип содержимого text / html (что также происходит, если локальное имя файла заканчивается на .html)

Не работает для типов контента app / xhtml + xml или text / xml (локальные имена файлов заканчиваются на .xhtml или .xml)

Я записал улучшение для этого: https://bugzilla.mozilla.org/show_bug.cgi?id=486931

0 голосов
/ 15 октября 2009

Firefox - один из немногих браузеров, который строго соблюдает спецификацию XHTML. Таким образом, чтобы сделать элемент редактируемым, вы должны указать атрибут contenteditable как true. Обратите внимание, что все имя атрибута в нижнем регистре. В вашем примере первая буква «E» в редактируемой форме была написана заглавными буквами.

Еще одна странность, о которой следует упомянуть, заключается в том, что IE (6,7,8) действует с точностью до наоборот. Чтобы сделать элемент редактируемым в IE, вы ДОЛЖНЫ добавить contentEditable="true" точно. По какой-либо причине contenteditable="true" (как и любой другой вариант капитализации) не работает.

0 голосов
/ 04 апреля 2009

contentEditable работает (протестировано в Firefox и Chrome) на элементах, чуждых html / xhtml, если я использую этот тип документа:

<!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 находится в пространстве имен, что, я думаю, имеет смысл, учитывая тип документа!).

Не элегантное решение.

...