Laatste update op 17 oktober 2017

Lukt het niet om de links te valideren die in een nieuw venster geopend moeten worden? Target=”_blank” veroorzaakt de foutmelding. Maar je kunt dat commando niet weglaten. Wat nu?

Twee oplossingen

Wanneer je ‘XHTML strict’ als doctype gebruikt krijg je te maken met dit probleem. Het attribuut target kun je wel gebruiken, maar alleen in transit-doctypes. Als je niet van strict af wilt stappen, kun je dit probleem op twee manieren oplossen: via een stukje javacode in de link, óf via het attribuut REL.

Code in de link

Wil je snel en simpel te werk gaan, dan plak je de code onclick=”window.open(this.href); return false;” op de plek waar je normaal gesproken target=”_blank” zou plaatsen. Dat is alles. Klaar. Helaas is het rechtstreeks verwerken van java in je link niet zo’n nette manier, het kan beter.

Attribuut REL

Neem één stapje meer en je hebt het helemaal voor elkaar. Maak een bestandje link.js met de volgende code (kopieer):
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; 

Verwijs ernaar in de head, bijvoorbeeld: (merk op dat het bestandje hier in de directory js staat).

Plak de code rel=”external” op de plek waar je normaal gesproken target=”_blank” zou plaatsen. Klaar is kees. Niet moeilijk, wel netjes! In een goed CMS kun je het REL-attribuut meteen invullen bij het aanmaken van de link. Kan dat niet, los het dan op in de code.

Dit artikel verscheen eerder op 42bis.nl

Categorieën: nieuws