/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Javascript i formular
Fra : Erik Ginnerskov


Dato : 12-04-06 21:02

Hej NG

Jeg er i gang med et par sider, hvori jeg har lagt en formular:

<form method="get"
action="javascript:var%20d=document,dd=d.doctype,s;s='Visning:%20%20%20%20\t
';if(d.compatMode=='CSS1Compat'){s+='Standard';}else{s+='Quirks';}if(dd){s+=
'\nSYSTEM:\n'+dd.systemId;s+='\nPUBLIC:\t'+dd.publicId;}if(d.characterSet||d
..charset){s+='\nTegnsæt:%20\t';s+=d.characterSet?d.characterSet:d.charset;}s
+='\nSidst ændret:\t'+d.lastModified;alert(s);">
<p><input class="knapper" type="submit" value="Test mode" />&nbsp;Klik på
knappen og se, hvilken mode din browser viser siden i.</p>
</form>

Det fungerer for så vidt godt nok. Men det udløser to warnings:

Warning: <form> converting backslash in URI to slash
Warning: <form> escaping malformed URI reference

.... hvorfor jeg vil lægge scriptet ud i en ekstern .js-fil.

Jeg lavede det på denne måde - modetest.js:

function
test(var%20d=document,dd=d.doctype,s;s='Visning:%20%20%20%20\t';if(d.compatM
ode=='CSS1Compat'){s+='Standard';}else{s+='Quirks';}if(dd){s+='\nSYSTEM:\n'+
dd.systemId;s+='\nPUBLIC:\t'+dd.publicId;}if(d.characterSet||d.charset){s+='
\nTegnsæt:%20\t';s+=d.characterSet?d.characterSet:d.charset;}s+='\nSidst
ændret:\t'+d.lastModified;alert(s);)

Kald til scriptfilen (her er der ikke fejl)

<script type="text/javascript" src="modetest.js"></script>

Formularens action ændrede jeg til action="javascript:test()" og så er det,
at der sker lige nøjagtig ingenting. Min konvertering til eksternt script er
med andre ord ikke lavet rigtigt. Men hvordan så?

Sider:

http://hjemmesideskolen.dk/html/testsider/quirks.asp
http://hjemmesideskolen.dk/html/testsider/standard.asp

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/



 
 
Jens Gyldenkærne Cla~ (12-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-04-06 21:40

Erik Ginnerskov skrev:


> Jeg er i gang med et par sider, hvori jeg har lagt en
> formular:
>
> <form method="get"

[snip]

Der er ingen grund til at anvende en formular når du alligevel kun
benytter javascript til at behandle data.


> Jeg lavede det på denne måde - modetest.js:
>
> function

[snip]

Det er en god ide at lægge scriptet som en funktion - men så kan du
lige så godt stille det lidt pænere op. Den udgave du anvender (der
ser ud til at være Hintzmanns favelet) er skrevet på én linje for
at kunne fungere som et bogmærke. En egentlig javascriptfunktion
kan - og bør - skrives mere læseligt.

Jeg har lavet følgende udgave af funktionen:

function browsermode() {
   var d=document,dd=d.doctype,s;
   s='Visning: \t';
   if(d.compatMode=='CSS1Compat'){s+='Standard';}
   else {s+='Quirks';}
   if(dd){
      s+='\nSYSTEM:\n'+ dd.systemId;
      s+='\nPUBLIC:\t'+dd.publicId;
   }
   if(d.characterSet||d.charset){
      s+='\nTegnsæt: \t';
      s+=d.characterSet?d.characterSet:d.charset;}
      s+='\nSidst ændret:\t'+d.lastModified;
   return(s);
}

> Formularens action ændrede jeg til action="javascript:test()"

Hvis du i stedet for en form anvender onclick på en knap, virker
det helt fint.

Se eksempelside her: <http://gyros.dk/usenet/js/browserinfo.shtml>.

Scriptet ligger inline, men validerer fint.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (12-04-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 12-04-06 22:40

Jens Gyldenkærne Clausen wrote:

> Den udgave du anvender (der
> ser ud til at være Hintzmanns favelet)

Man kan da heller ikke skjule noget for dig.

> kan - og bør - skrives mere læseligt.
>
> Jeg har lavet følgende udgave af funktionen:
>
> [klip script]
>
> Hvis du i stedet for en form anvender onclick på en knap, virker
> det helt fint.

Det fungerer upåklageligt og det giver heller ikke nogen warnings. Det er
bare perfekt. Takker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/



Knud Gert Ellentoft (12-04-2006)
Kommentar
Fra : Knud Gert Ellentoft


Dato : 12-04-06 23:40

Jens Gyldenkærne Clausen skrev:

>Jeg har lavet følgende udgave af funktionen:

Uden at kunne gennemskue, hvorfor.

I alerten er datoen forkert i Opera.
--
Topposter du svar, dvs. skriver dit svar over det citerede,
så ryger du på min ignoreringsliste.
Svar under det du citerer og citer kun det du svarer på - tak.
http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (12-04-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 12-04-06 23:48

Knud Gert Ellentoft wrote:

> Uden at kunne gennemskue, hvorfor.
> I alerten er datoen forkert i Opera.

Ja for sytten. Det ser ud som om siden sidst er opdateret for 36 år siden.

Jeg kigger i morgen på at få den funktion pillet ud. Den er alligevel ikke
nødvendig i denne sammenhæng.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/



Jens Gyldenkærne Cla~ (13-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-04-06 23:25

Knud Gert Ellentoft skrev:

> Uden at kunne gennemskue, hvorfor.
>
> I alerten er datoen forkert i Opera.

Det er fordi det er en SSI-side (.shtml) - som derfor ikke har
nogen last-modified-header (servergenererede sider bliver normalt
ikke cachet). 1. januar 1970 er bare standardværdien for en
javascriptdato.

Sammenlign evt. med en udgave uden SSI:
<http://gyros.dk/usenet/js/browserinfo.html>

IE og Firefox tager date-headeren og anvender den som last-modified
hvis sidstnævnte ikke eksisterer. Jeg ved ikke om det er et brud på
standarden eller om det bare er en uklarhed der gør forskellen
mellem IE/FF og Opera mulig - umiddelbart virker Operas fortolkning
mest logisk, men omvendt giver IE/FF en brugbar dato at arbejde med
sammenlignet med Operas.

Hvis man vil have vist sidste ændringsdato for en serversidefil,
skal man hente datoen på serversiden. Se evt. hvordan det kan gøres
med SSI her: <http://gyros.dk/usenet/html/sidst_opdateret.shtml>.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177553
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste