Avatar billede mungojerrie Nybegynder
30. marts 2004 - 10:01 Der er 16 kommentarer og
1 løsning

validering af xhtml og javascript hos W3C

Hej

Muligvis er denne kategori den forkerte, men har ikke kunnet finde en kategori for xhtml alene.....

Anyway:
Jeg vil gerne have min xhtml side valideret efter W3C standarden og den brokker sig noget så frygtelig over det javascript jeg har inkluderet i min source.

Jeg får denne fejl :


Line 26, column 16: character "<" is the first character of a delimiter but occurred as data

  document.write('<','script language="JavaScript1.1">jsVersion = 1.1;</','script>
                  ^
p.s. pilen peger på "mindre end" tegnet i starten af document.write

Nogen gode forslag ?
Avatar billede nute Nybegynder
30. marts 2004 - 10:20 #1
ehh ... du bruger 'document.write' til at skrive ud et <script> tag ?? det vil jo aldrig blive valideret. din struktur vil jo komme til at se sådan ud:

<script>
<script></script>
</script>

not good ...

/nute
Avatar billede mungojerrie Nybegynder
30. marts 2004 - 13:21 #2
hmm
Det er muligt det er rigtigt, men dette fejler også i valideringen hos W3C

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
  <title>:: JG Data ::</title>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />        <link rel="stylesheet" href="/css/main.css" type="text/css" />
  <script type="text/javascript" src="/javascript/main.js"></script>
  <script type="text/javascript" src="/javascript/stat.js"></script>
<script language="JavaScript1.1">jsVersion = 1.1;</script>
<script language="JavaScript1.2">jsVersion = 1.2;</script>
<script language="JavaScript1.3">jsVersion = 1.3;</script>
<script language="JavaScript1.4">jsVersion = 1.4;</script>
<script language="JavaScript1.5">jsVersion = 1.5;</script>
<script language="JavaScript1.6">jsVersion = 1.6;</script>
<script language="JavaScript2.0">jsVersion = 2.0;</script>
<script type="text/javascript">
var jsVersion = 1.0;
</script>
<script type="text/javascript">
var today = new Date();
var userId = saveCookieId();
var source = location.protocol + '//' + statUrl + gatherData() + '&userId=' + userId + '&timezoneOffset=' + escape(today.getTimezoneOffset()) + '&weekday=' + escape(today.getDay());
if (jsVersion > 1 && typeof(Image) != "undefined") {
    var img = new Image();
    img.src = source;
}
if (jsVersion == 1 || Image == null) {
    var htm = '<img src="' + source + '" border="0" height="0" width="0">';
    document.write(htm);
}
</script>
  </head>
<body>
</body>
</html>
Avatar billede mungojerrie Nybegynder
30. marts 2004 - 13:23 #3
hov der var lige en lille fejl i javascripten:

  <script type="text/javascript" src="/javascript/main.js"></script>
  <script type="text/javascript" src="/javascript/stat.js"></script>
<script type="text/javascript">
var jsVersion = 1.0;
</script>
<script language="JavaScript1.1">jsVersion = 1.1;</script>
<script language="JavaScript1.2">jsVersion = 1.2;</script>
<script language="JavaScript1.3">jsVersion = 1.3;</script>
<script language="JavaScript1.4">jsVersion = 1.4;</script>
<script language="JavaScript1.5">jsVersion = 1.5;</script>
<script language="JavaScript1.6">jsVersion = 1.6;</script>
<script language="JavaScript2.0">jsVersion = 2.0;</script>
<script type="text/javascript">
var today = new Date();
var userId = saveCookieId();
var source = location.protocol + '//' + statUrl + gatherData() + '&userId=' + userId + '&timezoneOffset=' + escape(today.getTimezoneOffset()) + '&weekday=' + escape(today.getDay());
if (jsVersion > 1 && typeof(Image) != "undefined") {
    var img = new Image();
    img.src = source;
}
if (jsVersion == 1 || Image == null) {
    var htm = '<img src="' + source + '" border="0" height="0" width="0">';
    document.write(htm);
}
</script>
Avatar billede nute Nybegynder
30. marts 2004 - 13:38 #4
well ... der er flere fejl.

dine:

<script language="JavaScript1.2">jsVersion = 1.2;</script>

skal have 'type' attribut

<script language="JavaScript1.2" type="text/javascript">jsVersion = 1.2;</script>

denne blok:

<script type="text/javascript">
var today = new Date();
var userId = saveCookieId();
var source = location.protocol + '//' + statUrl + gatherData() + '&userId=' + userId + '&timezoneOffset=' + escape(today.getTimezoneOffset()) + '&weekday=' + escape(today.getDay());
if (jsVersion > 1 && typeof(Image) != "undefined") {
    var img = new Image();
    img.src = source;
}
if (jsVersion == 1 || Image == null) {
    var htm = '<img src="' + source + '" border="0" height="0" width="0">';
    document.write(htm);
}
</script>

skal også have 'language' attribut i tillæg til at selve scriptet skal i <!-- //-->:

<script type="text/javascript" language="javascript">
<!--
var today = new Date();
var userId = saveCookieId();
var source = location.protocol + '//' + statUrl + gatherData() + '&userId=' + userId + '&timezoneOffset=' + escape(today.getTimezoneOffset()) + '&weekday=' + escape(today.getDay());
if (jsVersion > 1 && typeof(Image) != "undefined") {
    var img = new Image();
    img.src = source;
}
if (jsVersion == 1 || Image == null) {
    var htm = '<img src="' + source + '" border="0" height="0" width="0">';
    document.write(htm);
}
//-->
</script>

/nute
Avatar billede nute Nybegynder
30. marts 2004 - 13:40 #5
undskyld .. .en lille fejl. 'language' er ikke påkrævet attribut - 'type' er.
Avatar billede mungojerrie Nybegynder
30. marts 2004 - 13:47 #6
ja, jeg ved godt der skal være type attrib på script taget, men hvis jeg skriver type attrib'en så bliver min var jsVersion forkert. Så jeg skal nok i stedet finde en måde hvorpå jeg kan sørge for at javscriptet bliver afviklet, men ikke valideret
Kan man det ???
Ellers må jeg gå tilbage til html 4.01 i stedet for xhtml
Avatar billede nute Nybegynder
30. marts 2004 - 13:49 #7
well ... skal du skrive xhtml, så skal du have de attributter på, der er krævet ;o]
Avatar billede mungojerrie Nybegynder
30. marts 2004 - 13:51 #8
kan jeg ikke indkapsle scriptet ved hjælp af noget CDATA eller noget i den stil ?
Avatar billede nute Nybegynder
30. marts 2004 - 13:56 #9
dette fungerer da fint for mig:

<script type="text/javascript">var jsVersion = 1.0;</script>
<script language="JavaScript1.1" type="text/JavaScript1.1">jsVersion = 1.1;</script>
<script language="JavaScript1.2" type="text/JavaScript1.2">jsVersion = 1.2;</script>
<script language="JavaScript1.3" type="text/JavaScript1.3">jsVersion = 1.3;</script>
<script language="JavaScript1.4" type="text/JavaScript1.4">jsVersion = 1.4;</script>
<script language="JavaScript1.5" type="text/JavaScript1.5">jsVersion = 1.5;</script>
<script language="JavaScript1.6" type="text/JavaScript1.6">jsVersion = 1.6;</script>
<script language="JavaScript2.0" type="text/JavaScript2.0">jsVersion = 2.0;</script>
<script language="JavaScript" type="text/javascript">
<!--
alert( jsVersion );
//-->
</script>

Den viser 1.3, som er dét jeg kører

/nute
Avatar billede mungojerrie Nybegynder
31. marts 2004 - 08:34 #10
ja, det virker fint i IE, men ikke i netscape 4......
Avatar billede janegil Nybegynder
31. marts 2004 - 09:09 #11
Hvis du har et dokument det skriptet modifiserer dokumentet selv, gir det lite mening å validere dikumentet som det ser ut FØR skriptet har midifisert det. Og det er hva som skjer hos validator.w3.org; den utfører ikke skriptet.

Med Mozilla/FireFox DOM Inspector kan du se hvordan dokumentet ditt ser ut etter at skriptet er kjørt, men jeg tror nok FireFox retter det seom er ugyldig, før du får se det?

Tror det kan hjelpe å sette skriptet i CDATA, ja.

Dessuten ville jeg tro hele skriptet ble unndratt validering hvis du kommenterer det bort? (En teknikk som opprinnelig ble brukt for at browsere som ikke støtter SCRIPT-elementet, ikke skal vise koden i stedet. Se nutes kode ovenfor.)
Avatar billede nute Nybegynder
31. marts 2004 - 09:43 #12
Netscape 4  - eksisterer den stadig ??? :-|

Iflg. statistikker (w3schools.org) fra marts måned, så er det 0.4% der bruger NS4 ... why bother ? NN4 er måske en af de mest ubrugelige browsere der er blevet lavet. Test hellere dine sider i IE5+, mozilla, opera og NN7 som er de mest brugte browsere.

/nute
Avatar billede mungojerrie Nybegynder
31. marts 2004 - 09:48 #13
det er skræmmende så mange programmører der er ligeglade med om deres progam virker på tværs af alle browsere, bare fordi der ikke er ret mange der bruger de forskellige browsere. Det handler vel om faglig stolthed ikke om hvormange procent der benytter den enkelte browser........
Avatar billede nute Nybegynder
31. marts 2004 - 10:26 #14
mungojerrie >> det handler ikke om "at være ligeglad" med om koden kan forstås på tværs af alle browsere. Det handler om at følge med i tiden og tilpasse sig den verden man lever i.

Det giver ingen mening i at skrive alle sine breve og sende dem med snail-mail, fordi det stadig er nogen her i verden der bruger skrivemaskine og dermed ikke har en computer med mail (og tro mig .. .jeg så en skrivemaskine her for kort tid siden, så jeg ved de eksisterer). De fleste mennesker jeg kender, tilpasser sig de "regler" der omgiver den verden de er en del af. Hvis de nu skal sende et brev til en person der ikke har en computer, så sender de brevet med snail-mail ... ellers bruger de mail.

Med tanke på hvor mange problemer der er med NN4, så er det også om hvor mange timer (og penge) man er villige til at spilde på at nogle *meget* få brugere skal muligheden til at se en eller anden feature. Vil man få noget tilbage for disse timer (og penge) man smider i det ? Og hvor stor *er* sandsynligheden for at en person med NN4 skal snuble over ens site ?

Faglig stolthed ... hmm ... den kan nok godt diskuteres. For mig, er faglig stolthed, at lave noget der er kvalitetsmæssigt overlægent og at lave noget der følger standarder. Jeg vil tage mig den frihed, at fortælle den *ene* bruger, der finder mit website pr år, at det måske er en god grund til at opgradere sin browser. Dette vil jeg gøre mest for brugerens skyld, fordi det er ikke særlig smart at flyve rundt på kost når alle andre har personlige, jet-drevne flyvestole, men også for min og alle andres skyld, der laver websites som de kan få lov til at kigge på.

Selvfølgelig er det da kun positivt hvis man kan lave sine sites til NN4, men helt ærlig ... hvad skal man bruge det til ? Hvis jeg, som arbejdsgiver, skal ansætte en webudvikler, så vil jeg lægge vægt på at personen følger standarder. Dette er for mig et *meget* større tægn på kvalitet end at han kan lave noget kode som 0.4% af besøgende kan se. I en forretningssammenhæng er dette spild af tid, og spild af penge.

/nute
Avatar billede mungojerrie Nybegynder
31. marts 2004 - 10:31 #15
jeg kan godt følge dig, jeg er bare træt af at se mange virksomheder der kun laver en website der kan ses "korrekt" i IE og den browser er det værste gang L... der er lavet til dato. De programmører der måtte være så uheldige at skulle udvikle til firmaer med den holdning har jeg ondt af.....
Avatar billede nute Nybegynder
31. marts 2004 - 10:55 #16
"den browser er det værste gang L... der er lavet til dato" - det er jeg nu ikke enig i. Den er meget tilgivende, med tanke på hvor meget den korrigerer af ens kode, men det er vel så meget udviklerens skyld som browserens skyld. hvis man sætter korrekt doctype på sit dokument, så har ikke browseren så meget den skulle have sagt. At der er bugs i den ... tja ... vis mig det stykke software der *ikke* har nogle bugs.

mange af de ting som MS propper ind i sin IE, bliver efterfølgende ophøjet til standard hos w3c ... tilfældigheder ? det tror jeg ikke. M$ *er* banebrydende, på mange måder, og de var i sin tid, nogle af de første browsere der implementeret DOM og CSS i sine browsere.

Der er selvfølgelig pros and cons med alt - også browsere. Det er bedre at lære sig at bruge browserne og lære sig forskellerne mellem dem, istedet for at brokke sig over én af dem og forgude en anden.

"De programmører der måtte være så uheldige at skulle udvikle til firmaer med den holdning har jeg ondt af" - well ... hvis disse "programmører" er tilfredse med det de laver, så ser jeg ingen grund til at have ondt af dem. Heldigvis er det et mangfold i denne (IT)verden. Hvis alle skulle besidde samme grad af perfektionisme, have samme krav til kvalitet sin eller have samme syn på alt, så ville verden været kedelig at leve i.

Og husk ... det er ingen der tvinger nogen til at arbejde nogen steder. Hvis man ikke kan lide det man laver ... så kan man jo bare stoppe ;o]

/nute
Avatar billede mungojerrie Nybegynder
31. marts 2004 - 11:31 #17
jeg lukker spørgsmålet.....
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
Kurser inden for grundlæggende programmering

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