2009-04-03 6 views
0

Ich habe ein XML-Dokument, das ich in einem Web-Browser angezeigt wird, mit einem Stylesheet angehängt:contentBearbeitbar für Knoten in einem XML/zusammengesetzten Dokument?

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

Mit der xhtml Namespace-Deklaration und xhtml: Script-Tag, ich Javascript ausführen kann.

Was ich tun möchte, ist willkürliche Nicht-XHTML-Elemente in diesem Dokument Inhalt bearbeitbar zu machen. (Eigentlich sind sie in einem anderen Namensraum)

Auch wenn ich @ contentEditable = "true" explizit hinzufüge (dh ohne auf Javascript zurückgreifen zu müssen), ist der Inhalt nicht wirklich editierbar (in Firefox 3.0.4).

Ist es möglich, es in einem der aktuellen Browser zu bearbeiten? (Ich hatte keine Probleme mit <div contentEditable="true"> Bearbeite mich </div> in einem XHTML 1.0 Transitional doc)

Ich kann nicht einmal ein xhtml: div in diesem Dokument (in Firefox) bearbeiten; Wenn ich das tun könnte, könnte das einen Weg nach vorne bieten.

Antwort

1

In Firefox 3, @ Inhalt editierbare = „true“ macht nur das entsprechende Element bearbeitet werden, wenn der Inhaltstyp text/html (was auch geschieht, wenn ein lokaler Dateiname mit .html endet)

Es spielt keine ‚t für Inhaltstypen arbeiten app/xhtml + xml oder text/xml (lokale Endung Dateinamen mit .xhtml oder .xml)

ich habe eine Erweiterung für diese protokolliert: https://bugzilla.mozilla.org/show_bug.cgi?id=486931

0

contentEditable Werke (getestet in Firefox und Chrome) auf Elemente, die HTML/XHTML-fremd sind, wenn ich dieses Doctype verwenden:

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

und eine HTML-Datei Erweiterung (statt .xml).

Ich muss keine HTML-Elemente enthalten (zB Kopf, Körper, div, p).

css wird jedoch nicht angewendet (wenn mein XML in einem Namespace ist, was bei dem Doctype Sinn macht!).

Keine elegante Lösung.

0

Firefox ist einer der wenigen, Browser, die die XHTML-Spezifikation strikt durchsetzen. Um ein Element editierbar zu machen, müssen Sie also das contenteditable Attribut als true angeben. Beachten Sie, dass der gesamte Attributname in Kleinbuchstaben geschrieben ist. In Ihrem Beispiel wurde das erste "E" in editable großgeschrieben.

Eine andere Eigenart, die erwähnt werden sollte ist, dass IE (6,7,8) genau das Gegenteil tun. Um ein Element im IE bearbeitbar zu machen, müssen Sie contentEditable="true" genau hinzufügen. Aus welchem ​​Grund auch immer, contenteditable="true" (sowie jede andere Variation in der Großschreibung) funktioniert nicht.