Ik heb een website gebouwd waarbij ik er op heb gelet dat de code valideerde gebruik makende van de strict.dtd. Nu is er een sectie op de website met links naar pdfs welke ik graag automatisch in een nieuw venster wil openen en het gebruikte documenttype biedt die optie niet (voor zover ik weet); target="_blank" kan dan nam,elijk niet in een link.
Als oplossing hiervoor had ik bedacht om via javascript alle elementen met een bepaalde klassenaam op te zoeken en deze een onclick event mee te geven dat naar de gevraagde url gaat in een nieuw venster. Het voordeel van deze methode is dat als javascript niet werkt de links niet dood zijn; de link opent dan standaard in hetzelfde venster. Een nadeel is dat het dus dan altijd een popup betreft zonder dat de gebruiker hier invloed op heeft.
Ook is het een nadeel dat wellicht popup blockers die iets minder goed geschreven of nogal strict ingesteld zijn een dergelijke popup kunnen blokkeren wat natuurlijk niet gewenst is. (Met deze reden open ik de link alsnog in het zelfde venster als de popup geblokkeerd is).
Ik heb zelf hiervoor dus javascript verzameld en geschreven, en vroeg mij af of de door mij beschreven/geschreven methode een goede methode is of dat er problemen schuilen in mn script...
Korte samenvatting van wat gebeurd:
Alle elementen worden opgezocht met een bepaalde klassenaam, al deze elementen krijgen onclick de functie fnOpen toegewezen. Als er op zo'n element geklikt wordt dan wordt de link in een nieuw venster geopend, wordt dat venster na het openen niet gevonden dan opent de link alsnog in het eigen venster.
Deze methode werkt dus op iedere browser waarop ik het heb kunnen proberen en ik heb geen makkelijkere methode kunnen vinden. Ik kan mogelijk de fnOpen methode ietsjes aanpassen, maar de veranderingen die ik bedoel zijn niet bijzonder.
Wat vinden jullie er van??
Als oplossing hiervoor had ik bedacht om via javascript alle elementen met een bepaalde klassenaam op te zoeken en deze een onclick event mee te geven dat naar de gevraagde url gaat in een nieuw venster. Het voordeel van deze methode is dat als javascript niet werkt de links niet dood zijn; de link opent dan standaard in hetzelfde venster. Een nadeel is dat het dus dan altijd een popup betreft zonder dat de gebruiker hier invloed op heeft.
Ook is het een nadeel dat wellicht popup blockers die iets minder goed geschreven of nogal strict ingesteld zijn een dergelijke popup kunnen blokkeren wat natuurlijk niet gewenst is. (Met deze reden open ik de link alsnog in het zelfde venster als de popup geblokkeerd is).
Ik heb zelf hiervoor dus javascript verzameld en geschreven, en vroeg mij af of de door mij beschreven/geschreven methode een goede methode is of dat er problemen schuilen in mn script...
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <title>tweakers voorbeeld</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-15"> <script type="text/javascript"> document.getElementsByClassName = function (needle) { // functie van crsip; geeft alle elementen terug met klassenaam needle } /* * Open a certain URL in a new window. If a popup blocker prevents this the link is opened in the * current window. */ function fnOpen() { var strURL = this.href; var oNewWindow = window.open( strURL ); if ( !oNewWindow ) { document.location.href = strURL; } return false; } /* * Assign an onclick event handler to all links having the classname strClassname */ function fnAssignPopupLinks( strClassname ) { // Functie van crisp die alle elementen met die klassenaam op haalt var aAnchorList = document.getElementsByClassName( strClassname ); i = aAnchorList.length; while (i--) { oAnchor = aAnchorList[i]; if ( oAnchor.href ) { oAnchor.onclick = fnOpen; } } } </script> </head> <body> <p>Wat tekst hier, en een <a href="http://www.tweakers.net" class="newWindow">link</a> daar.</p> <script type="text/javascript"> fnAssignPopupLinks( 'newWindow' ); </script> </body> </html> |
Korte samenvatting van wat gebeurd:
Alle elementen worden opgezocht met een bepaalde klassenaam, al deze elementen krijgen onclick de functie fnOpen toegewezen. Als er op zo'n element geklikt wordt dan wordt de link in een nieuw venster geopend, wordt dat venster na het openen niet gevonden dan opent de link alsnog in het eigen venster.
Deze methode werkt dus op iedere browser waarop ik het heb kunnen proberen en ik heb geen makkelijkere methode kunnen vinden. Ik kan mogelijk de fnOpen methode ietsjes aanpassen, maar de veranderingen die ik bedoel zijn niet bijzonder.
Wat vinden jullie er van??