Avatar billede per1291 Nybegynder
11. juni 2005 - 23:14 Der er 5 kommentarer og
1 løsning

Hvad er korrekt, nutidig Javascript?

Jeg har lært javascript ved at kigge på kodeekesempler i tutors på Internet. Som noget af det første fik jeg at vide, at et script skal se sådan her ud:

<script language="JavaScript">
<!--
(... og så noget kode ...)
// -->
</script>

For nylig har jeg fundet ud af, at det nok i stedet bør se sådan her ud:

<script type="text/javascript">
(... og så noget kode ...)
</script>

Har jeg ret i, at man nu trygt kan antage, at alle fungerende browsere kan læse Javascript, og at det derfor er unødvendigt at indlægge en noscript-sektion?

Bør jeg tillige tilføje javascript-versionsnummeret?

- - -

En anden ting handler om, hvordan man kalder en Javascript-funktion ude fra sin HTML-kode.

F.eks. blev man før i tiden rådet til at skrive
onclick="java script:DoSomething()"

men nu hører jeg at denne notation er ugyldig.

Nu hedder det i stedet
onclick="DoSomething()"

Og nogle gange tror jeg man kan nøjes med at skrive
onclick="DoSomething"

Jeg forstod godt de tidligere forklaringer: Du skal skrive "java script:..." fordi der måske vil opstå andre scriptsprog i fremtiden, og derfor bør du fortælle browseren hvilket sprog du bruger.

Jeg tror at rigtig mange ligesom jeg lærer Javascript ved at prøve sig frem. Men det er lidt svært at holde sig orienteret. Mange af de "smarte kodestumper" har jo nogle år på bagen.

Er der andre fælder jeg bør undgå? Er der andre fornyelser jeg har overset? Hvad bør jeg gøre for at lære korrekt Javascript?

Hilsen  Per
Avatar billede roenving Novice
12. juni 2005 - 01:23 #1
language-attributten på script-tags er optional, mens type er obligatorisk !o]

Du kan trygt forvente at alle nuværnede fungerende browsere browsere forstår javascript, men det kan så være disablet, men selvom tællerne rapporterer 4-11% uden javascript-support, er det min fornemmelse, at langt de fleste findes i robotter (søgemaskinernes og f.eks. e-mail-harvesters !-) og kun et fåtal findes i virkelige browsere ...

-- og versionsnummeret er meget vigtigt, hvis du bruger voldsomt nye udvidelser af ecma-script-konceptet, men alle moderne browsere understøtter ecma-script 262 (javascript 1.5, se f.eks. http://en.wikipedia.org/wiki/ECMAScript !-), så derfor bør du ikke i hverdagen bruge versionsangivelsen ...

-- du kan jo prøve følgende i din editor, og f.eks. fjerne udkommenteringen i vbscript-tingen:

<script type="text/javascript">
function vis(txt){
  alert(txt);
}
</script>

<script language="vbscript">
sub vis(ByVal txt)

msgbox(txt)
'msgbox(txt,36)

end sub
</script>

<button onclick="java script:vis('Ohøj')">Hej</button><br>
<button onclick="vbscript:vis('Ohøj')">Hej</button>

-- java script: er en pseudo-fil-protokol, som blev indført sammen men de tidligste udgaver af LiveScript (som Netscapes første udgaver hed, jeg tror det var i beta-udgaver, for de fik ret hurtigt Suns tilladelse til at bruge javascript-navnet !-), oghang sammen med en manglende event-model i den tids browsere ...

Under alle omstændigheder er det ugyldig script-kode uanset om man bruger javascript eller vbscript, da den slags direktiver ikke findes defineret nogen steder (at ingen browsere kløjs i det skyldes nok den mulighed, at det skal bruges, hvis man skriver det i stedet for en url !-)

-- den sidste du beskriver er nok en misforståelse, for den kan aldrig bruges, men hvis du i et script laver en funktionstildeling skal man bruge den anonymt, medmindre man netop bruger en anonym funktion:

window.onload = DoSomething;

eller f.eks.

window.onload = function(){
  DoSomething();
}
Avatar billede per1291 Nybegynder
13. juni 2005 - 01:22 #2
Tak roenving, jeg vil checke dit ecma-link.

Okay, ingen versionsangivelse.

Har forsøgsvis indtastet dit eksempel - og lavet nogle småændringer - som alle sammen tyder på, at en vbscript-funktion slet ikke kan kaldes. Har jeg ret?

En anonym funktion? Det begreb forstår jeg ikke.

Hilsen  Per
Avatar billede roenving Novice
13. juni 2005 - 01:24 #3
En anonym funktion er det jeg viser til sidst med function() !-)
Avatar billede per1291 Nybegynder
13. juni 2005 - 01:37 #4
Nå men så er det den første del af sætningen jeg ikke forstår:

> hvis du i et script laver en funktionstildeling skal man bruge den anonymt [..]

Kan du give et eksempel, så gør det i form af et svar.

Hilsen  Per
Avatar billede roenving Novice
13. juni 2005 - 02:05 #5
function Karl(hansDame){
  alert(hansDame?hansDame:'Single');
}

Normalt vil man kalde en funktion i en eller anden aktiv sammenhæng, men nogen gange skal man tildele en funktion til en foruddefineret funktion (eller måske i en OO-sammenhæng tildele den samme funktion til mange objekter !-), og så skal man tildele en funktion til en anden funktion, hvor det ikke giver mening at medtage paranteserne, som vil angive et kald til funktionen og derfor ikke kan bruges til at tildele !-)

Et eksempel kunne være:

document.forms[0].submit();// vil submitte formen

document.forms[0].submit() = Karl('Hanne');// vil lave fejl, for der er en udført funktion før lighedstegnet og ikke et objekt, som kan tildeles noget ...

document.forms[0].onsubmit() = Karl('Hanne');// samme problem ...

document.forms[0].onsubmit = Karl;// Helt i orden, men Karl vil altid være Single

document.forms[0].onsubmit = function(){Karl('Pernille');};// Helt i orden, men Karl vil være bundet til Pernille

Velbekomme '-)
Avatar billede roenving Novice
14. juni 2005 - 00:37 #6
-- og tak for point ;~}
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