Avatar billede stephanryer Nybegynder
05. februar 2007 - 12:44 Der er 13 kommentarer og
1 løsning

Generere specialtegn ved oprettelsen af textNodes

Når man opretter en tekst-node, benyttes:

.createTextNode("noget tekst her & her")

Men hvad skal man gøre, hvis man nu vil overholde XHTML 1.0 standarderne og derfor ikke kan skrive et &-tegn.

Jeg har forsøgt at skrive & og & men i begge tilfælde bliver det ikke opfattet som specialtegn og man ser blot disse to koder som tekst på sin html-side.

Er der nogen der ved hvordan man laver specialtegn og får disse fortolket som specialtegn?

På forhånd tak.
Avatar billede barklund Nybegynder
05. februar 2007 - 12:53 #1
createTextNode burde omforme dit &-tegn til & - gør den ikke det, da?
Avatar billede stephanryer Nybegynder
05. februar 2007 - 12:55 #2
nopes, det gør den ikke.
Avatar billede barklund Nybegynder
05. februar 2007 - 13:01 #3
Har du et eksempel?
Avatar billede stephanryer Nybegynder
05. februar 2007 - 13:02 #4
Copy - paste eventuelt dette her lille eksempel ind i et html-dokument for at se problemet:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
</head>
<body>
    <div id="parentDiv">
   
    </div>

    <script type="text/javascript">
        document.getElementById("parentDiv").appendChild(document.createTextNode("Hejsa&amp;farvel!"));
    </script>

</body>
</html>

Man ser blot skriften:

Hejsa&amp;farvel!
Avatar billede stephanryer Nybegynder
05. februar 2007 - 13:05 #5
Problemet består i at når man skriver "&" så laves det automatisk om til &amp;

Men jeg får en fejl med min validering hvis jeg kun skriver "&" i mit javascript.
Avatar billede barklund Nybegynder
05. februar 2007 - 13:07 #6
Smid dit javascript i en CDATA-node:

<script type="text/javascript">
// <![CDATA[
document.getElementById("parentDiv").appendChild(document.createTextNode("Hejsa & farvel!"));
// ]]>
</script>

Så validerer det fint :)

--
Morten Barklund
Avatar billede stephanryer Nybegynder
05. februar 2007 - 13:27 #7
haha ja, doh! Den havde jeg glemt.

Har tidligere lavet javascript som skulle overholde xhtml 1.0 og der benyttede jeg også den metode.

Jeg går ikke ud fra at den skal bruge i seperate .js filer, vel?

Læg et svar :)
Avatar billede barklund Nybegynder
05. februar 2007 - 13:30 #8
Nej, det tror jeg bestemt ikke er nødvendigt :)
Avatar billede stephanryer Nybegynder
05. februar 2007 - 13:35 #9
Jeg takker :)
Avatar billede barklund Nybegynder
05. februar 2007 - 13:42 #10
Og jeg tarker for points :)
Avatar billede olebole Juniormester
06. februar 2007 - 15:03 #11
<ole>

barklund >> Du lægger da netop ikke scriptet i en CDATA-node, når du udkommenterer den. At den kode validerer, er en fejl  ;o)

CDATA-noder giver kun mening, når en XML-parser skal parse dokumentet - og så må den endelig ikke være udkommenteret.

Skal en HTML-parser behandle dokumentet (og det sker altid med XHTML1.0-Transitional), skal CDATA-tags udkommenteres - og er således komplet uden virkning på noget somhelst.
At det altid er HTML-parseren, der parser et dokument skrevet i XHTML1.0-Transitional, betyder naturligvis også, at der absolut ingen fordele er ved at skrive mod denne version ... tværtimod  ;o)

/mvh
</bole>
Avatar billede stephanryer Nybegynder
06. februar 2007 - 15:05 #12
Jeg tror nu barklund har ret i udkommenteringen. Denne udkommentering bruges for at linien ikke skal opfattes som javascript af browseren.
Avatar billede barklund Nybegynder
06. februar 2007 - 15:12 #13
Jeg kan da ikke med javascript udkommentere en XML-node? Vi kan tage tre parsere i betragtning.

* HTML-parseren ser en scriptblok og ignorerer indholdet.

* XML-parseren ser en node (der hedder script), som indeholder en tekstnode (med værdien "//") efterfulgt af en CDATA-tekstnode (med javascriptet til og med "// ").

* JavaScript-parseren ser en script-blok der består af en kommentar i første linje og en kommentar i sidste, som begge ignoreres.

Hvilken parser af de tre parsere vil se en CDATA-node (så vidt jeg ved er det kun XML-parseren der kender til CDATA-noder) som er udkommenteret?

--
Morten Barklund
Avatar billede barklund Nybegynder
06. februar 2007 - 15:14 #14
Det er primært dit udsagn "CDATA-noder giver kun mening, når en XML-parser skal parse dokumentet - og så må den endelig ikke være udkommenteret." der er komplet meningsløst for mig - XML-parsere kender da ikke til javascript-kommentarer ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester