Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> AJAX a XHTML Strict
reo
post 11.02.2008, 12:06:13
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 11.09.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nevt
post 11.02.2008, 13:21:36
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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?


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
reo
post 12.02.2008, 08:57:03
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 11.09.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nevt
post 12.02.2008, 12:40:00
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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

Ten post edytował nevt 12.02.2008, 12:45:03


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Ziels
post 13.02.2008, 13:56:38
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

Ostrzeżenie: (0%)
-----


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();

Ten post edytował Ziels 13.02.2008, 14:02:33
Go to the top of the page
+Quote Post
nevt
post 13.02.2008, 17:31:32
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
reo
post 14.02.2008, 11:09:35
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 11.09.2007

Ostrzeżenie: (0%)
-----


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');
Go to the top of the page
+Quote Post
nevt
post 14.02.2008, 14:18:01
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
reo
post 18.02.2008, 11:25:22
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 11.09.2007

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 16:00