Autor Zpráva
Martin_
Profil *
Ahoj,
mám seznam odkazů <ul><li><a></a></li>.....</ul> a občas v něm další vnořený seznam odkazů. Seznamu jsem nastavil třídu. Když kliknu na jakýkoli z těch odkazů, potřeboval bych, aby se otevřel v novém okně. V javascriptu nejsem moc zběhlý, tak bych se chtěl zeptat, jak na to. Zasekl jsem se na tom, že nevím, jak naadresovat odkazy v seznamu s třídou a vnořených seznamech.
Firy
Profil
<a href=".." target="_blank">text odkazu</a>

Návod
Joker
Profil
dyž kliknu na jakýkoli z těch odkazů, potřeboval bych, aby se otevřel v novém okně.
Hodně lidem se tohle nebude líbit.
Buď přes target="_blank" anebo přes metodu window.open.

Ještě upozorním, že tohle (přes JS) je tzv. pop-up neboli vyskakovací okno a hodně lidí je má blokované, takže místo odkazu uvidí jen hlášku o zablokování vyskakovacího okna.
habendorf
Profil
Zasekl jsem se na tom, že nevím, jak naadresovat odkazy v seznamu s třídou a vnořených seznamech.

Je úplně jedno kde odkazy jsou, o nějakých třídách ani nemluvě.
Martin_
Profil *
O smyslu toho, co se snažím udělat, bych tady nediskutoval.

Asi jsem se špatně vyjádřil. Na stránce může být více seznamů. Potřebuji, aby se odkazy, jen ze seznamu s určitou třídou, otevíraly do nového okna.
Martin_
Profil *
Rád bych to vyřešil tak, aby všechen JS byl uložen v externím soubor.
Joker
Profil
Tak něco takovéhoto:

el.onclick = 'window.open("'+el.href+'");';
el.href="";

Do el se dá prvek odkazu vyhovující příslušné podmínce, celé se to může dát do externího skriptu (ale musí se to dělat až po načtení dokumentu), adresa je normálně v href a fungovalo by to i s vypnutým Javascriptem.
Timy
Profil
A co něco takového?

window.onload=function()
{
seznamy=document.getElementsByTagName("ul");
for(i=0;i<seznamy.length;i++)
{
if(seznamy[i].className=="external")
{
odkazy=seznamy[i].getElementsByTagName("a");
for(j=0;j<odkazy.length;j++)
{
odkazy[j].target="_blank";
}
}
}
}

(funguje pro ul s třídou external a všechny vložené ul - ty už nepotřebují třídu)
Martin_
Profil *
Díky všem, Timy to vystihl přesně.
Toto téma je uzamčeno. Odpověď nelze zaslat.