webForumDet fria alternativet

target="_blank" i xhtml?

10 svar · 732 visningar · startad av Bäckman

BäckmanMedlem sedan nov. 2001274 inlägg
#1

Validatorn klagar på den fetstilta koden nedan. Vad ska jag ha istället för att få samma effekt?

<a href="http://t.extreme-dm.com/?login=refrag" [b]target="_blank"[/b]>
PeddaMedlem sedan juni 20006 032 inlägg
#2

_blank är inte tillåtet i strikt xhtml om jag inte har fel.

BäckmanMedlem sedan nov. 2001274 inlägg
#3

Hur får jag en länk att öppnas i nytt fönster då? Går det inte överhuvudtaget?

jarvkloMedlem sedan juli 20013 378 inlägg
#4

Kör du xhtml 1.0 Transitional så skall det funka med target="_blank".
Kör du xhtml 1.0 Strict eller xhtml 1.1. så får du använda eventet onclick och lägga in ett JavaScript som öppnar ett nytt fönster...
Exempel på hur man kan göra finns t.ex. här

BäckmanMedlem sedan nov. 2001274 inlägg
#5

Ok, tack så hemskt mycket. Hoppas sidan går igenom besiktningen nu. :)

jarvkloMedlem sedan juli 20013 378 inlägg
#6

Jupp - men var beredd på att Javascript inte alltid är det enklaste att plocka in rakt av i ett xhtml-dokument eftersom man inte får använda "<", ">" eller "&"-tecken hursomhelst i xhtml - men *det* är en annan historia (tips: lägg så mycket kod du kan i funktioner i en extern .js-fil om du får problem - så behöver du bara lägga funktionsanrop i t.ex. onclick och andra event... Det ger mindre javaSriptkod i dokumentet som kan knasa xhtml-valideringen ;) )

FlashesMedlem sedan jan. 2003282 inlägg
#7

Om inte _blank fungerar måste jag säga att allt inte är bättre med xhtml. Finns det någon rationell förklaring till varför det är borttaget?
Jag vill ha så lite annan kod som möjligt på mina sidor, men har tänkt att gå över till xhtml om jag bara lyckas lära mig hur. Läser lite olika tutorials men saknar tid just nu.

Mvh
Jan-Olov

jarvkloMedlem sedan juli 20013 378 inlägg
#8

Såhär är det.
Attributet target till <a> (och alla dess värden inkluderat "_blank") togs bort redan i HTML4.0 Strict.
Så har det alltså varit i HTML ända sedan december 1997. Det är inget nytt för xhtml
Det är dock inte så många som väljer att köra HTML 4.0 Strict - (det flesta kör HTML4.0 Transitional eller struntar i att lägga in en <!DOCTYPE, vilket ger - taggar funkar som i Transitional ;) )

Så att "target" saknas blir för de flesta kanske en överraskning när de går över till xhtml 1.0 och då väljer att köra xhtml 1.0 Strict som dokumenttyp.
Men väljer man att köra xhtml 1.0 Transitional så har man fortfarande möjligheten att köra med <a target> - man väljer ju själv, eller hur ;)

Om du inte vill ha så mycket kod på dina sidor, så går det att lägga in onclick-eventet för en eller flera <a>-taggar via Javascript från en extern scriptfil i efterhand (och den koden kan dessutom använda värdet i href som URL- man behöver inte köra med 'href="#"' som i exemplet jag länkade till ovan, och Javascript-koden kan alltså göras likadan för alla <a>-taggar !)

Gör man så så blir det ju dessutom mindre HTML-kod i dokumentet än om man kör med 'target="_blank"' på alla länkar... Och har användaren slagit av Javascript så funkar länkarna ändå!

Varför W3C i december 1997 valde att "rekommendera bort" frames och target-attribut på diverse taggar har debatterats ingående genom åren...
Och känslorna har svallat både för och emot...
Tycka vad man vill om frames - vill man ha det kan man använda det även i "standard xhtml (DTD:erna Transitional och Frameset), vill man köra xhtml Strict i sidorna som laddas i frames kan man lägga med en standard-javascript-fil på alla sina sidor som ger möjligheten på t.ex. <a class="extern" href="">.

IMHO är det "nya" (sedan HTML4 kom 1997) sättet att öppna sidor i nytt fönster bara "same same - but different" ;)

Men visst - *allt* är antagligen inte bättre för *alla* med xhtml. Men jag trot nog att ibland så ser folk kanske inte fördelarna med xhtml eftersom det är så lätt att påverkas av att xhtml ofta får klä skott för saker som infördes redan 1997 i HTML4 och att xhtml därför (pga dessa - - som jag tycker - olyckliga myter) ibland får ett oförtjänt dåligt rykte för att folk fått för sig saker som helt enkelt inte stämmer...

FlashesMedlem sedan jan. 2003282 inlägg
#9

Ok, tack för förklaringen.
Jag kommer att övergå till xhtml även om det hade varit xhtml "fel" att _blank var borta. Det är bara det att jag inte är någon kodexpert och måste lära mig java för att göra saker som jag kunde göra på annat sätt förut.
Då är lösningen att inte köra strict alltså. För se vad det blir.
Tack jarvklo för förklaringen.

Mvh
Jan-Olov

PalleMedlem sedan apr. 20003 174 inlägg
#10

Jag har löst det så här för att få sidorna att öppnas i ett nytt
fönster, tycker det är smidigare än att skriva knepiga länkar. ;)

Länkarna utformas efter detta syntax:

[RED]<a href="redir.htm?url=http://www.webforum.nu">Länktext</a>[/RED]

Där då http://www.webforum.nu är adressen som besökaren ska skickas till..

På sidan redir.htm ligger följande script:

[RED]<script type="text/javascript">
<!--

function parseUrl(qUrl) {
	var st = unescape(location.search);
	st = st.replace(/\+/g," ");
	if (st.indexOf(qUrl) != -1){
		var tempst = st.substring(st.indexOf(qUrl + "=") + qUrl.length + 1,st.length);
		return tempst;
	} else {
		return("");
	}
}

if (parseUrl("url") !=0){
	if (parseInt(navigator.appVersion) >= 3) {
		if (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5) {
			var tools = new Packages.java.awt.Toolkit.getDefaultToolkit();
			screen = tools.getScreenSize();
		}
		width = screen.width;
		height = screen.height;
	}
	window.open(parseUrl("url"), "wopen", "toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,top=0,left=0,width=" + width + ",height=" + height).focus();
	history.back();
} else {
	alert('Länken är inte korrekt utformad..');
	history.back();
}

//-->
</script>[/RED]
Peter SMedlem sedan dec. 20025 483 inlägg
#11

En annan variant skulle kunna vara att ge de länkar man vill skall öppnas i ett nytt fönster ett namn, t.ex. "redir":

function initRedir(){
	if( document.links ){
		var d = document.links, i=0, elm;

		while( ( elm=d[ i++ ] ) ){
			if( elm.name == "redir" )
				elm.target = "_blank";
		}
	}
};

window.onload = function(){
	initRedir();
};

// En länk med namnet "redir"
<a href="http://www.webforum.nu" name="redir">webForum</a>

Nu kommer länken att fungera även för de användare vars webbläsare inte stöder JavaScript ( eller inte har det påslaget ).

:)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)