18 Sep, 2009

Target=_blank op de XHTML manier

Categoriën: Chrome |FireFox |IE6 |IE7 |IE8 |javascript |links |menu |safari |valid |Xhtml Strict

Soms kan je niet anders en moeten links naar een externe site openen in een nieuw venster, maar je kan niet target=_blank gebruiken omdat dan je XHTML niet meer XHTML zou zijn. Met een beetje javascript kan je dit oplossen:

HTML

Je originele link

<a href="document.html" target="_blank">external link</a>

Aangepaste link

<a href="document.html" rel="external">external link</a>
<![CDATA[
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;
]]>

Gerelateerde Snippets

10 Reacties op "Target=_blank op de XHTML manier"

joery

September 18th, 2009 at 22:28

1

Het is mogelijk om het op deze manier ook te gebruiken. ikzelf gebruik deze liever ;)

Erwin

September 20th, 2009 at 04:50

2

Hoi hoi,

Je kan deze ook nog anders in geven….

externelinks.js

< ![CDATA[
function buitenlinks() {
if (document.getElementsByTagName) {
	anchors = document.getElementsByTagName("a");
	for (i=0; i
window.onload = buitenlinks;

—————————————————
in de wordt dan dit script geplaatst of een externe verwijzing naar externelinks.js
—————————————————

in de link zelf wordt dan de class geplaatst.

<a href=”!!!!!!!!!!” class=”nofollow”>EXTERN</a>

Mark

September 20th, 2009 at 09:19

3

@Erwin: je script is identiek – buiten andere benamingen en een extra titel en dat de class gevraagd wordt – hetzelfde.

joery

September 23rd, 2009 at 19:27

4

Het kan ook zo <a href="dokument.html" title="een title hierzo" onclick="window.open(this.href,’_blank’);return false;">linkje hier</a>

Mark

September 24th, 2009 at 12:38

5

@Joery: dit is de slechtste manier ooit, inline javascript!!

joery

September 24th, 2009 at 21:10

6

ok goed om weten dan hoe noem je het javascript bestand?

Martin

October 3rd, 2009 at 02:14

7

Je kunt beter geen window.onload gebruiken, want deze overschrijft alle eerder aangebrachte onload-acties. Je kunt beter werken met window.addEventListener en window.attachEvent. Daarmee voeg je een actie toe aan de onload i.p.v. deze te vervangen. Op die manier kan dit script nooit de functionaliteit van andere javascripts dwarsbomen.

Dree

October 15th, 2009 at 11:25

8

Even voor de goede orde: target=”_blank” is gewoon toegestaan hoor in XHTML transitional, alleen niet in XHTML strict. Dus in plaats van allerlei JS hacks toe te passen om aan XHTML strict te voldoen, kun je ook kiezen voor een XHTML transitional doctype

Mark

October 15th, 2009 at 18:45

9

@Dree: ja is toegestaan, maar zegt usability niet dat de gebruiker zelf moet kunnen kiezen hoe hij een link opent?

Malc0mn

November 26th, 2009 at 10:43

10

Vergeet Drupal niet: http://drupal.org/project/extlink

Same thing, maar dan in een moduleke met wat extra W3C standaardjes ;-)

Reactie formulier


Demo: Target=_blank op de XHTML manier:

Advertenties

Volgende nieuwe Snippet:

  • Momenteel niks gepland.