Náhrada target pomocou javascriptu

Na veľkom množstve webov sa využíva doctype typu xhtml-strict. Len málokto si však uvedomí, že v ňom nie je podporovaný parameter target pre odkazy. Aké sú teda možnosti jeho náhrady?

Pri tvorbe tejto stránky a zadaní url do validátora som zistil nepríjemnú skutočnosť, a to že html kód nie je validný. Chybnou časťou boli práve odkazy smerujúca mimo mojich stránok, ktoré sa mali otvárať v novom okne.

Prvým riešením, ako zabezpečiť správnosť html kódu bolo odstránenie target="_blank" zo všetkých použitých odkazov. Táto možnosť nebola vhodná, pretože sa po prekliknutí mimo mojich stránok nezachovajú otvorené v prehliadači.

Ďalšou možnosťou by bolo poskytnutie rôzneho obsahu stránky pre validátor, a pre známe prehliadače (kde bežnému prehliadaču poskytnem html kód s odkazmi do nového okna a validátorom odkazy otvárajúce sa v tom istom okne). Táto praktika je však nekorektná, preto som sa jej chcel vyhnúť.

Konečným riešením je úprava stránky pomocou javascriptu na strane prehliadača, kde sa všetky odkazy smerujúce na externé stránky obsiahnuté v html kóde upravia (doplní sa im spomínaný target).

function InitAll() {
    if (document.body) {
        var pocetOdkazov = document.links.length;
        for(i=0;i < pocetOdkazov;i++) {
            if(document.links[i].hostname!=document.location.hostname) {
                document.links[i].target=&quot;_blank&quot;;
            }
            if(document.links[i].pathname.indexOf('redirect/')!=-1) {
                document.links[i].target=&quot;_blank&quot;;
            }
        }
    } else {
        setTimeout("InitAll()",100);
    }
}
InitAll();