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]>
10 svar · 732 visningar · startad av Bäckman
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]>
_blank är inte tillåtet i strikt xhtml om jag inte har fel.
Hur får jag en länk att öppnas i nytt fönster då? Går det inte överhuvudtaget?
Ok, tack så hemskt mycket. Hoppas sidan går igenom besiktningen nu. :)
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 ;) )
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
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...
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
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]
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 ).
:)