Megdöbbenve tapasztaltam, hogy az XHTML 1.1 Strict és az XHTML 1.1 szabványok tiltják az <a> elemben a target beállítást. Mégis, mi van helyette? Nem találtam semmit. Pedig ez kell! Főleg a _blank.
A pontos indokokat én sem ismerem (csak sejtem), de hidd el, annyira nem is hiányzik. :) Egyébként egy modulba került ki, amit "importálhatsz", és így rendelkezésedre fog állni.
Megkerülni viszont nagyon egyszerű (és nekem teljesen szimpatikus így csinálni):
<a href="http://weblabor.hu"
onclick="window.open(this.href); return false;">
Weblabor, a kedvenc oldalam
</a>
Ezzel már én is találkoztam... :)
Ha jól tudom, emögött az az elv lapul, hogy új ablakot a felhasználó nyisson, ne a böngésző. Nyilván ezen lehez vitatkozni, de hát ez van... :)
Szerintem nem ez a válasz. Egyszerűen az XHTML esetén modulokra bontották a DTD-jét, hogy ne legyen olyan nagy, illetve külön-külön, így párhuzamosan is lehessen dolgozni rajta, javítgatni.
Nem tudom. Szerintem a sitepointos megoldas nem minden tekintetben jo. Meghozza azert mert csak akkor allitja at a linkeket amikor betoltodott az oldal. SOT az onloadra atallitas altalaban rossz megoldas.
A mai bongeszok optimalizalva vannak arra, hogy szoveget minel hamarabb kitegyek. Aztan johetnek a kepek. Na most user el kezd bongeszni ramegy egy elvileg kifele mutato linkre mivel meg script nem irta at a targetet szepen abba az ablakba nyitja neki.
Vagy elofordulhat, hogy legkozelebb visszajon es olvasgat egy kicsit mielott klikkelne es ekozben letoltodik az oldal, lefut a script es ekkor mar uj ablakba fog nyilni a link.
1. Nem az altalunk kitalalt modon mukodik a link.
2. Nem feltetelunk konzisztensen mukodik.
Jo megoldas lehetne:
1. behaviorok. Sajnos csak IE, Mozilla
2. Esetleg a klikkelest elkapni egy esemenykezelovel. Ezt body-hoz kell rendelni, hogy mindenhol mukodjon.
Hatranya: ha valahol elkapjuk mar masert az esemenyt es letiltjuk a tovabb haladasat akkor megint nem fog mukodni. Persze ez eleg ritka eset.
Ha jól viselkedő oldalt akarsz, akkor nem írhatsz bele JS-t (anélkül is mennie kell a linknek), és a klikkelés elkapót is csak onloadra tudod hozzárendelni. Akkor meg nem jutottunk előbbre.
A target elhagyásának lényege, hogy a felhasználót intelligens emberi lénynek tekintjük, aki tudja, hogy mit akar, és nem pedig egy szánalmas véglénynek, akire rá kell erőltetni a tutit.
A különböző ugyanúgy kinéző felhasználói felület elemek logikusan ugyanúgy kell, hogy működjenek, különben a felhasználó nem tudja, hogy mit várhat. Most ha ráklikkel egy linkre, akkor az mit fog eredményezni? A hagyomány és megszokás azt mondja, hogy új oldalra jut. A target attribútum a viselkedését változtatja meg a linknek, ami nem logikus.
Vannak olyan oldalak, ahol kis földgömb, vagy más jelzés van a link mellett (lásd a WFSZ webhelyét például). Ez segít az interfész megkülönböztetésében, tehát jelzi, hogy más funkciót kell várni az adott linktől.
Mivel ez a megjelenítés alapértelmezésben egyáltalán nem várható el a böngészőktől, ezért kikerült a szabványból ez az elem. Különben ahogy András mondta, modulként betölthető az 1.1-es XHTML-ben, az 1.0 FrameSet-nek pedig része (hiszen ott kell a linkek keretekbe irányítása érdekében). Szóval semmi sincs veszve. Javaslom a már említett Sitepointon leírt megoldást, mert az koncepcionálisan is nagyon korrekt.
Target
Megkerülni viszont nagyon egyszerű (és nekem teljesen szimpatikus így csinálni):
Ezzel már én is találkozta
Ha jól tudom, emögött az az elv lapul, hogy új ablakot a felhasználó nyisson, ne a böngésző. Nyilván ezen lehez vitatkozni, de hát ez van... :)
A sitepoint.com-on van egy nagyon jó cikk, én azt a módszert használom.
Re: Ezzel már én is találkozta
http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_targetmodule
Az XHTML 1.1 esetén is használhatod a target-et, csak kell egy megfelelő DTD-t csinálni hozzá:
http://www.juicystudio.com/tutorial/xhtml/module.asp
Az egy mellékhatás, hogy találkozik azzal az irányelvvel, hogy bízzuk a felhasználóra, hogy mi történik.
-boogie-
onload=run
A mai bongeszok optimalizalva vannak arra, hogy szoveget minel hamarabb kitegyek. Aztan johetnek a kepek. Na most user el kezd bongeszni ramegy egy elvileg kifele mutato linkre mivel meg script nem irta at a targetet szepen abba az ablakba nyitja neki.
Vagy elofordulhat, hogy legkozelebb visszajon es olvasgat egy kicsit mielott klikkelne es ekozben letoltodik az oldal, lefut a script es ekkor mar uj ablakba fog nyilni a link.
1. Nem az altalunk kitalalt modon mukodik a link.
2. Nem feltetelunk konzisztensen mukodik.
Jo megoldas lehetne:
1. behaviorok. Sajnos csak IE, Mozilla
2. Esetleg a klikkelest elkapni egy esemenykezelovel. Ezt body-hoz kell rendelni, hogy mindenhol mukodjon.
Hatranya: ha valahol elkapjuk mar masert az esemenyt es letiltjuk a tovabb haladasat akkor megint nem fog mukodni. Persze ez eleg ritka eset.
Elkapás?
Van target
A különböző ugyanúgy kinéző felhasználói felület elemek logikusan ugyanúgy kell, hogy működjenek, különben a felhasználó nem tudja, hogy mit várhat. Most ha ráklikkel egy linkre, akkor az mit fog eredményezni? A hagyomány és megszokás azt mondja, hogy új oldalra jut. A target attribútum a viselkedését változtatja meg a linknek, ami nem logikus.
Vannak olyan oldalak, ahol kis földgömb, vagy más jelzés van a link mellett (lásd a WFSZ webhelyét például). Ez segít az interfész megkülönböztetésében, tehát jelzi, hogy más funkciót kell várni az adott linktől.
Mivel ez a megjelenítés alapértelmezésben egyáltalán nem várható el a böngészőktől, ezért kikerült a szabványból ez az elem. Különben ahogy András mondta, modulként betölthető az 1.1-es XHTML-ben, az 1.0 FrameSet-nek pedig része (hiszen ott kell a linkek keretekbe irányítása érdekében). Szóval semmi sincs veszve. Javaslom a már említett Sitepointon leírt megoldást, mert az koncepcionálisan is nagyon korrekt.