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?

Wanneer je ‘XHTML strict’ als doctype gebruikt krijg je te maken met dit probleem.

Twee oplossingen

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.

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: <script type=”text/javascript” src=”js/link.js”></script> (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.

0 Shares:
Dit artikel is 2.590 keer gelezen