Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: AJAX a XHTML Strict
Forum PHP.pl > Forum > XML, AJAX
reo
Tworzę stronę w technologii AJAX. Pliki które są ładowane jako podstrony serwisu mają format XML o strukturze:
Kod
<?xml version="1.0">
   <response>
       <title>Tytuł podstrony</title>
       <text><![CDATA[
          <span style="color: black;">Tagi html</span>
       ]]></text>
   </response>

Chcę by moja strona była zgodna ze standardem XHTML. Jednak nie mogę wtedy korzystać z własności JavaScript innerHTML. Wiem że muszę DOM'em dodawać tagi do kodu strony.
Jakim sposobem dodać tagi z XML-a do kodu strony? Może jest sposób na rozbicie tych znaczników na obiekt DOM'u i wklejenie go przez appenChild?
Proszę o pomoc tiredsmiley.gif
nevt
Cytat
Chcę by moja strona była zgodna ze standardem XHTML. Jednak nie mogę wtedy korzystać z własności JavaScript innerHTML.

nie bardzo rozumiem, dlaczego zakładasz, że jedno wyklucza drugie?
reo
Spróbuj do Firefoxa wysłać Content-Type: application/xhtml+xml; i zobaczysz. Fox zgłosi wyjątek!
Wikipedia:
Cytat
Ze względu na trudności z parsowaniem, nie powinno się używać w XHTML-u javascriptowej metody document.write() i właściwości innerHTML; jednak niektóre przeglądarki już obsługują te konstrukcje także w dokumentach XML. Zamiast nich należy używać metod modelu DOM.
IE nawet nie wie co to application/xhtml+xml tongue.gif
nevt
cóż... w swoich projektach mam
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8" />

swobodnie używam AJAX'a - odpowiedzi z serwera wstawiam do innerHTML - wszystko hula na IE6 + IE7 + FF2 + O9 i nie zgłasza żadnych wyjątków ...
strony bez problemu przechodzą walidację w3c dla xhtml 1.0 strict ...

posiłkujesz się wyłącznie cytatami z wiki czy czasami puszczasz też swój kod do walidacji w3c ?

EDIT: podejrzewam, że FF generuje ci wyjątek, ponieważ kod który próbujesz wstawić do innerHTML nie jest poprawnym kodem XHTML - pokaż ten kod to zweryfikujemy ...
Ziels
To że przechodzi validację to nic nie znaczy. Validator W3C jest nieco nieudolny.

XHTML to nie jest jakiś ciąg znaków - to drzewo zagnieżdżonych w sobie elementów. Ingerowanie za pomocą InnerHtml w zawartość elementów nie jest dobrą praktyką - powinno się traktować to DOM'em:

  1. var node = document.getElementById('nodeId');
  2. node.textContent = 'Tekstowa zawartość elementu';


W ten sposób wstawiamy tekst. Nowe węzły można dodawać poprzez element.appendChild();
nevt
Cytat
To że przechodzi validację to nic nie znaczy. Validator W3C jest nieco nieudolny.

ubawiłeś mnie do łez smile.gif
zgłoś do w3c że walidacja nic nie znaczy, a ich walidator jest nieudolny ...
reo
Cytat(nevt @ 12.02.2008, 12:40:00 ) *
podejrzewam, że FF generuje ci wyjątek, ponieważ kod który próbujesz wstawić do innerHTML nie jest poprawnym kodem XHTML - pokaż ten kod to zweryfikujemy ...
Miałeś rację winksmiley.jpg Wczoraj to sprawziłem. Kod wklejany do xhtml-a był niepoprawny - chyba już legendarne ampersandy w url-ach.

Co do Content-Type to wysyłaj go przez header() :
Kod
header('application/xhtml+xml; charset=utf-8');
nevt
cieszę się, że pomogłem. a co do:
Cytat
Co do Content-Type to wysyłaj go przez header() :
Kod
header('application/xhtml+xml; charset=utf-8');

to przecież wkleiłem kawałek wynikowego kodu stronki a nie kod skryptu który ją generuje...
reo
Dobra to do meritum : Jak z takiego np. stringa
Kod
<div><span>hi</span><b>lol</b></div>

zrobić obiekt DOM który będzie można wkleić przez appenChild?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.