Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[HTML + Javascript] volgorde/verschil onclick vs href

Pagina: 1
Acties:
  • 2.714 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi,

ik zit met het volgende: ik heb een link waarbij ik een stukje javascript wil setten voordat ik naar een andere pagina ga. Echter, ik wil ook gebruikers opvangen die geen javascript hebben. Deze zouden dus rechtstreeks naar de andere pagina gebracht mogen worden. Ik heb het volgende bedacht.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script language="javascript">
function doThing() {
    doSomeAjaxStuff(bla);
    location.replace("/mijnpagina.html");
}
</script>
</head>

<body>
<a href="/mijnpagina.html" onclick="doThing()">Doe!</a>
</body>
</html>


Dit lijkt te werken. Maar ik vraag me af hoe het zit met andere browsers en dergelijke. Ik moet er namelijk zeker van zijn dat deze link altijd werkt. Ik zou natuurlijk ook met <script></script> en <noscript></noscript> tags kunnen werken maar dat lijkt me iets te veel gedoe.

Is dit een goeie oplossing of heeft iets anders toch de voorkeur?

Verwijderd

De onclick wordt eerst uitgevoerd. Je hebt namelijk dan nog de kans om de actie (de click) te cancellen. Dit doe je door false terug te geven in het onclick gedeelte.

Je krijgt dan dus:
HTML:
1
2
3
<a href="/mijnpagina.html" onclick="doeIets(); return false;">Doe iets</a>
of
<a href="/mijnpagina.html" onclick="doeIets();">Doe iets</a>

In het tweede geval wordt eerst doeIets() gedaan, en daarna wordt de bezoeker naar /mijnpagina.html doorverwezen. Dit hoeft de functie doeIets() niet eens te doen!

In het eerste geval wordt doeIets() uitgevoerd, en daarna wordt NIET doorverwezen naar /mijnpagina.html door de return false;

[ Voor 11% gewijzigd door Verwijderd op 24-09-2007 20:39 ]


Verwijderd

Verwijderd schreef op maandag 24 september 2007 @ 19:48:
Is dit een goeie oplossing of heeft iets anders toch de voorkeur?
Deze manier wordt vaker toegepast. Voor zover ik weet werkt het in alle moderne browsers en in IE.

Waarom eigenlijk die location.replace? Als je daar niets doet en de browser zijn gang laat gaan, volgt 'ie de hyperlink nadat 'ie klaar is met de onclick.

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Als ik 't zo zie probeer je dingetjes zo goed mogelijk te doen, wat natuurlijk harstikke goed is.

Denk er echter aan dat de language-attribuut van de script-tag deprecated is. Tegenwoordig is type helemaal hip :+

Dus niet:

code:
1
2
3
<script language="javascript">
(...)
</script>


Maar:

code:
1
2
3
<script type="text/javascript">
(...)
</script>

Verwijderd

Topicstarter
Thx, helemaal duidelijk.
Wat wordt er bedoeld met "Moderne browsers". Is hier bijvoorbeeld ook IE5.5 of eventueel nog IE5.0 bij gerekend?

Verwijderd

Verwijderd schreef op maandag 24 september 2007 @ 21:16:
Wat wordt er bedoeld met "Moderne browsers". Is hier bijvoorbeeld ook IE5.5 of eventueel nog IE5.0 bij gerekend?
Tot moderne browsers reken ik browsers die een goede implementatie van HTML, CSS en Javascript hebben. Denk hierbij aan Firefox, Opera, Konqueror, Safari en dergelijke.

IE houdt er zijn eigen standaarden op na en wordt doorgaans niet tot de moderne browsers gerekend.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:51

crisp

Devver

Pixelated

Maar in dit geval zullen IE5.x ook hetzelfde gedrag vertonen (gelukkig) ;)

Mind you dat je in doeIets() natuurlijk niet asynchrone dingen moet gaan doen, dan kan je nog wel eens andere resultaten krijgen.

Intentionally left blank


  • Japius
  • Registratie: April 2003
  • Laatst online: 29-11 16:08
Verwijderd schreef op maandag 24 september 2007 @ 22:41:
[...]
IE houdt er zijn eigen standaarden op na en wordt doorgaans niet tot de moderne browsers gerekend.
Helaas is de praktijk echter dat het leeuwendeel van je bezoekers wél IE gebruikt en dat je er daarom toch rekening mee moet houden... :(

Verwijderd

Jajaja, dat weten we allemaal wel. Maar dat onclick gebeuren gaat al jaren goed.
Pagina: 1