Avatar billede mik789 Nybegynder
23. august 2004 - 08:06 Der er 10 kommentarer og
2 løsninger

href=hash onclick=funktion - eller href=javascript:funktion

href="#" + onclick="funktion" eller href="java script:funktion"

hvad er egentlig forskellen / fordelen ved den ene frem for den anden af disse metoder?
Avatar billede Slettet bruger
23. august 2004 - 12:59 #1
Begge dele er en skodmåde at lave det på. Den korrekte måde er:

href="rigtigt link" onclick="funktion"

Så er der nemlig noget, der også virker for dem uden javascript - f.eks søgemaskiner.
Avatar billede mik789 Nybegynder
23. august 2004 - 15:42 #2
hvad mener du med "rigtigt link"?
her drejer det sig jo ikke om et link til en side, men til en funktion. det gode ved links er at de i sig selv virker onclick, og det er jo det man udnytter ved href="java script:funktion.

prøv og læg et eksempel...
Avatar billede Slettet bruger
23. august 2004 - 22:05 #3
Prøv at forklare, hvad en sådan funktion skulle gøre?

Jeg vil til enhver tid foreslå at lade samme funktion være til rådighed som et serverside script - med mindre der er tale om noget pynt, som egentlig er overflødigt, men bare ser smart ud.

Husk også, at du også kan have onclick på alle mulige andre elementer end lige netop <a>.
Avatar billede mik789 Nybegynder
24. august 2004 - 08:58 #4
et eksempel kan være et popup vindue, det kan være opdateringen af et indhold af en boks vha innerHTML eller det kan være visningen af en ellers skjult menu-boks. Alle disse eksempler er ganske almindelige og bliver også brugt som eksempler i standard JavaScript- og DHTML-dokumentation. Der er intet "forkert" ved dem. Det jeg spørger til er ikke om man kan lide disse metoder eller om clientside scripting er værre eller bedre end serverside scripting (det må i alle feld komme an på formålet), men om hvordan de virker. Det er rent praktisk. Jeg synes f.eks. nogle gange det virker som om href="#" onclick="funktion" er hurtigere end href="java script:funktion", men kan ikke rigtig se hvorfor det skulle være det. Selv foretrækkerk jeg umiddelbart den sidste metode fordi det den sender til statuslinjen (f.eks.: "java script:openWin();" giver mere information end bare "#". Tilsvarende er det efter min mening et problem hvis man lægger onclick på andre elemeneter, f.eks. <span>, der på siden bare efterligner et link (f.eks. med underline), for så får man slet ingen information i statuslinjen. Og ligefrem også at efterligne statusmeddelelsen med en onmouseover="status('java script:openWin()';" på elementer der ikke er ment til at sende den meddelelse ville være absurd.

Er der evt. også andre der har noget at bidrage med?
Avatar billede mik789 Nybegynder
24. august 2004 - 12:12 #5
her er noget dokumentation vedr. <a href="java script:funktion"> :
http://devedge.netscape.com/library/manuals/1998/htmlguide/links.html
http://devedge.netscape.com/library/manuals/1998/htmlguide/tags17.html#1428565
http://devedge.netscape.com/library/manuals/1998/htmlguide/tags7.html#1227754

sandbox 23/08-2004 12:59:17> jeg kan ikke se fidusen. Det du vil have svarer til f.eks.:

<a href"http://eksperten.dk" onclick="alert('du skulle til Eksperten, men det kommer du ikke alligevel'); return false;">Vil du til Eksperten?</a>

For det du vil have, er et "rigtigt link", f.eks. til Eksperten, men her er vi jo kun interesseret i at afvikle funktionen, så vi er nødt til at returnere false, og så er linket jo ligegyldigt. Ellers skulle man angive et fake link og hvad skulle det gøre godt for?
Avatar billede roenving Novice
24. august 2004 - 12:49 #6
Og et eksempel på det smarte i at gøre sådan:

<a href="http://eksperten.dk" target="_blank" onclick="window.open(this.href,'Eksperten','width=400,height=300,status=no,top='+(screen.availHeight-300)/2+',left='+(screen.availWidth-400)/2); return false;">Vil du til Eksperten?</a>

-- for så kommer alle til Eksperten i et nyt vindue, men det er ikke så kønt eller i den størrelse, du ville have ønsket, for de brugere, som har slået javascript fra !-)
Avatar billede mik789 Nybegynder
24. august 2004 - 13:14 #7
reonving>ja, ok, hvis det er et nyt vindue man vil åbne (bort set fra strict dokumenter der ikke kan have target), men hvis funktionen er noget andet (vise et lag, opdatere noget indhold) så går den ikke.

Men jeg vil hellere høre dig om selve sp. Det var faktisk da jeg sad og prøvede mig lidt frem med noget af din kode fra din working demo med at tilpasse vinduet det billede der skal vises, at jeg synes at din metode (href="#" onclick="openWin(kode);return false;") loader det ny vindue hurtigere end href="java script:openWin(kode);", og jeg tænkte om der er en forskel på at kalde funktionen gennem link-tag'ets indbyggede funktionalitet og at kalde det fra en onclick.
Avatar billede roenving Novice
24. august 2004 - 13:23 #8
Man kan sige, at events er født til at udføre javascript-funktioner, mens der må være en lille omvej, hvor browseren skal omstille sig selv fra at loade et vindue til at udføre et javascript, men jeg vil da egentlig blive overrasket, hvis det er noget som er registrerbart uden en egentlig microtime-måling !-)
Avatar billede mik789 Nybegynder
24. august 2004 - 13:36 #9
ok, vi kommer det vist ikke meget nærmere.
lægger I begge et svar (sandbox og roenving), så deler vi. alle har bidraget til diskussionen ;-)
Avatar billede Slettet bruger
24. august 2004 - 20:48 #10
Jeg mente egentlig kun, at hvis det var muligt, skulle man lave det, så der også er et relevant link i stedet for bare "#". Når det er til visning af en i forvejen skjult blok på siden, bør man lave så blokken bliver skjult af noget javascript under load af siden, og så linket til at vise blokken bliver lavet af javascript. På denne måde På denne måde er oplysninger til rådighed både med og uden javascript.

Derudover forstod jeg det sådan, at du spurgte efter "best practice" og det er jo noget helt andet end, hvad der er "normalt". Det er jo meget normalt at lave sider, der kun virker i IE, og så tilføje nye udgaver af siden, hvis den skal kunne ses med andre browsere, men det er jo smartere at lave, så det bare virker i alle.
Avatar billede roenving Novice
25. august 2004 - 07:36 #11
Oki '-)
Avatar billede roenving Novice
25. august 2004 - 07:42 #12
-- 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