Доступный для редактирования на узлах в XML / составном документе?
-
23-08-2019 - |
Вопрос
У меня есть 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);если бы я мог это сделать, это могло бы открыть путь вперед.
Решение
В Firefox 3 @content-editable="true" делает соответствующий элемент доступным для редактирования только в том случае, если тип содержимого - text / html (что также происходит, если локальное имя файла заканчивается на .html)
Это не работает для типов контента app / xhtml + xml или text / xml (локальные имена файлов, заканчивающиеся на .xhtml или .xml)
Я зарегистрировал улучшение для этого: https://bugzilla.mozilla.org/show_bug.cgi?id=486931
Другие советы
contentEditable работает (протестировано в Firefox и Chrome) с элементами, которые чужды html / xhtml, если я использую этот doctype:
<!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!).
Не очень элегантное решение.
Firefox - один из немногих браузеров, который строго соблюдает спецификацию XHTML.Итак, чтобы сделать элемент доступным для редактирования, вы должны указать contenteditable
атрибут как true
.Обратите внимание, что все имя атрибута указано в нижнем регистре.В вашем примере первая буква "Е" в editable была написана с заглавной буквы.
Еще одна особенность, о которой следует упомянуть, заключается в том, что IE (6,7,8) действует с точностью до наоборот.Чтобы сделать элемент доступным для редактирования в IE, вы ДОЛЖЕН Добавить contentEditable="true"
вот именно.По какой бы то ни было причине, contenteditable="true"
(а также любое другое изменение заглавных букв) не работает.