Öppna länkar i nya fönster med XHTML
En undersökning av Jakob Nielsen kom fram till att man bör öppna nya fönster för dokument som inte är av ”webb-karaktär” (via Backend Media). Anledningen är att användarna inte ser exempelvis de öppnade PDF- eller Word-dokumenten som delar av webbplatsen.
Tidigare har det hetat att man aldrig ska tvinga på användaren nya fönster, av flera anledningar. Bland annat går det inte att använda ”tillbaka”-knappen från det nya fönstret. På GUUUI kommenterar John Resig dessa nya rön från Nielsen:
That is, of course, considering that the user has some sort of plug-in installed that can handle these documents. If you’re using a non-IE browser and/or don’t have Microsoft Word (and you’re using Windows) then you will now have to close two extra windows, when you only had to close one before.
Jag är tveksam till att öppna nya fönster, men eftersom undersökningen visar att det är bra borde det ju vara så. Min tveksamhet kommer från att det inte är helt enkelt att få igång dessa plugin under Linux – då blir de nya fönstren som öppnas tomma och dokumentet öppnas i ytterligare ett nytt fönster. Det är bara besvärligt, precis som Resig skriver.
Om man väl bestämmer sig för att öppna nya fönster för användaren finns det också vissa tekniska problem med detta.
Attributet target i a-taggen
Med html 4 och xhtml 1.0 transitional sätter man helt enkelt värdet på attributet target i a-taggen till ”_blank”. Om sidan skrivs med xhtml 1.0 strict får man dock inte använda target-attributet. Då måste man använda Javascript (se nedan).
Däremot finns det en modul i xhtml 1.1 (och förmodligen 2.0) som heter Target. Genom att hänvisa till den modulen kan man också i fortsättningen använda target-attributet. Det kräver dock en del handarbete för att få igång, som finns beskrivet på Accessify.com och Swedish Golden Retrievers.
Javascript och DOM
Den enkla Javascript-lösningen är att använda funktionen window.open vid onclick-händelsen. Då öppnas ett nytt fönster för de webbläsare som stöder Javascript, men eftersom href-attributet också används, krävs inte Javascript. Tyvärr skickas sällan information om den hänvisande sidan (eng. referrer) med när window.open används, så för många är det inte en användbar lösning.
<a href="http://www.daven.se/blogg/" onclick="window.open(this.href); return false;" onkeypress="window.open(this.href); return false;">Skriftligt</a>
Sitepoint har en annan, intressant lösning, som innebär att man använder attributet rel för att markera de länkar man vill ska öppnas i ett nytt fönster. När sidan laddas in körs Javascript-kod, som sätter DOM-variabeln target för varje markerad länk till ”_blank”. Detta motiverar man med att xhtml och DOM är helt skilda fenomen. Jag tycker att det är en elegant, men samtidigt något tveksam lösning. Det känns inte helt rätt, som man brukar säga – men det verkar fungera bra.
Läs fler artiklar om:
dom, javascript, webbutveckling, xhtml
Tack så mycket!
Skrivet av Alvin, onsdag 25 juni 2008, 14:37