2009-10-03 6 views
12

Oto fragment kodu, który nie potwierdzi:XHTML nie zweryfikuje && i <w funkcji JavaScript

if (user_age > 15 && user_age < 91) 

Robi się następujące błędy:

XML Parsing Error: StartTag: invalid element name

i

XML Parsing Error: xmlParseEntityRef: no name

Pierwszy błąd jest zgłaszany dla "mniej niż", a drugi jest rzucany dwa razy, raz dla każdego znaku ampersand.

Zastąpienie powyższych znaków za pomocą & i < potwierdza poprawność, ale oczywiście całkowicie niszczy tę funkcję.

+0

Możesz zastąpić swoje wyrażenie tym: '! (! (User_age> 15) ||! (91> user_age))'. Ale to tylko obejście. – Gumbo

+0

Dodanie tagów CDATA rozwiązało problem. Dziękuję bardzo. –

+0

PROBLEM JEŚLI JavaScript był w XML i XHTML jest generowany przez XSLT: CDATA ">", "<" i "&" są konwertowane. alert ((2> 1)? "OK1": "OK2"); // jest konwertowany! Użyj

Odpowiedz

31

Albo można zabezpieczyć skrypt z walidacji xml jak poniżej:

<script type="text/javascript"> 
//<![CDATA[ 
    if (user_age > 15 && user_age < 91) { 
     // do soemthing 
    } 
//]]> 
</script> 
+1

chroń przed walidacją xml, to brzmi jak oszustwo w test. Literal i <> muszą znajdować się wewnątrz CDATA w poprawnym formacie XML, bez tego Firefox powinien odmówić renderowania dokumentu, jeśli Firefox był zgodny (ale teraz dokument prawdopodobnie nie jest wyświetlany jako 'application/xhtml + xml', więc to się nie stanie.) – u0b34a0f6ae

8

Przenieś skrypt do innego pliku :)

Jest to standardowe (i dobrze) przyzwyczajenia do osobnego stylu (w .css pliku), dane (.html) oraz skryptów oczywiście .js pliku.

+0

css powinno być również w swoim własnym pliku – MrChrister

+0

po prostu wyślij aktualizację :) – IProblemFactory

1

umieścić JavaScript w <![CDATA[...]]> sekcji

+2

Jak stwierdzono w odpowiedzi na odpowiedź Martina: Nie zapomnij skomentować tego jako jest literałem XML w JavaScript. –

2

Wszystko JavaScript powinien być CDATA w XHTML:

<![CDATA[ 
if (user_age > 15 && user_age < 91) 
]]> 
+3

Nie zapomnij skomentować tego jako jest literałem XML w JavaScript. –

+1

Internet Explorer wydaje się kolidować z tym. Na przykład: błędy w znakach < w kodzie JavaScript. –

0

można spróbuj CDATA, ale trochę czasu to nie zadziała, zależy to od ustawienia serwera. Nie jestem profesjonalistą, ale testowałem i nie działałem, ale jeśli umieścisz kod javascript w pliku .js, a następnie połączysz ten plik gdzieś w swoim ciele. to na pewno zadziała. OSOBISTO TESTOWANY.

Powiązane problemy