echoSwe skrev:
Vad är fel med det?
rel="external" är inte ett förbjudet attribut. det ger logisk information om hur länken fungerar - den visar att den går ut från sidan (tex.). så sluta säga "förbjudet"! Attributet heter rel och är inte förbjudet.
Om det är i JS så handlar det om events medan markup handlar om att förmedla data! Enligt ert resonemang så är det lika fel att skriva
img { border:0; }
i sin css för att undvika fel i validatorn i strict juh!!! css handlar om presentation, html handlar om data och javascript handlar om events, kortfattat. separation av lagerna helt enkelt.
Jag menade target="_blank". Varför lägga till det när man använder strict (där det inte är tillåtet) istället för att (som Jarvklo skrev nu såg jag) byta till transitional?
echoSweMedlem sedan nov. 20041 189 inlägg Ja... det är väl jag mot världen som vanligt :)
Roligt med lite diskussioner här i forumet. Har varit ont om det.
Jag håller med jarvklo (svårt att inte göra det).
Hoppas du förstår echoSwe att det inte är rel-attributet de andra pratar om. Precis som jarvklo skriver är felet att peta in det enligt DTD:n otillåtna attributet target.
Men kan man inte helt enkelt använda metoden att för länkar som har rel="external" sätta onclick=window.open (eller vad det heter, DOM-skriptar så förbaskat lite) och stoppa det vanliga länkanropet med hjälp av skriptet? Då bryter man inte med DTD:n utan allt beteende ligger i skriptet. (Jag menar givetvis att länkarna ska se ut som: <a href="foo" rel="external">bar</a> utan skriptet). Fast det finns väl en del praktiska problem med olika webbläsare vad gäller den metoden om jag inte minns fel.
dAEkMedlem sedan feb. 20041 816 inlägg <Bortse från detta inlägg, det rör egentligen inte ämnet.>
dAEkMedlem sedan feb. 20041 816 inlägg Sorry var ute och cyklade lite, jag redigerade bort föregående inlägg eftersom det ändå inte var speciellt mycket on topic.
Jag är inte så duktig att jag förstår era resonemang 100 % men funderarar ändå lite. Min sida är byggd med XHTML strict och den validerar. Jag använder mig av rel="external" och tänker som så; Det handlar om att separera funktionalitet från struktur och presentation. Detta är ju som förut sagts en viktig del i webstandardsättet att koda. Därför gäller
<script type="text/javascript" src="scripts.js"></script>
och att aldrig ha ett javascript direkt i dokumentet. Nu har jag ju separerat presentation, data och events och allt validerar, det måste väl vara OK? ;)
echoSweMedlem sedan nov. 20041 189 inlägg
webbebba skrev:
Jag är inte så duktig att jag förstår era resonemang 100 % men funderarar ändå lite. Min sida är byggd med XHTML strict och den validerar. Jag använder mig av rel="external" och tänker som så; Det handlar om att separera funktionalitet från struktur och presentation. Detta är ju som förut sagts en viktig del i webstandardsättet att koda. Därför gäller
<script type="text/javascript" src="scripts.js"></script>
och att aldrig ha ett javascript direkt i dokumentet. Nu har jag ju separerat presentation, data och events och allt validerar, det måste väl vara OK? ;)
Ja! Helt rätt! Precis det jag har sagt hela tiden :)
Tack, tack! ...för att nån håller med mig :)
InsiderMedlem sedan jan. 2000978 inlägg
echoSwe skrev:
Ja! Helt rätt! Precis det jag har sagt hela tiden :)
Tack, tack! ...för att nån håller med mig :)
Det var väl inte det som diskussionen gick ut på. Handlade det inte om huruvida man skulle stoppa in ett target-attribut i sin xhtml-kod eller inte?
Jag förstår inte varför man inte kan använda javascript till sina beteenden på sidan fullt ut. Det går ju fint att öppna ett nytt fönster med javascript utan att blanda in target-attributet... :q
echoSweMedlem sedan nov. 20041 189 inlägg
Insider skrev:
Det var väl inte det som diskussionen gick ut på. Handlade det inte om huruvida man skulle stoppa in ett target-attribut i sin xhtml-kod eller inte?
Jag förstår inte varför man inte kan använda javascript till sina beteenden på sidan fullt ut. Det går ju fint att öppna ett nytt fönster med javascript utan att blanda in target-attributet... :q
Nej, det jag har hela tiden försökt säga var just det. Inlägg #15:
echoSwe skrev:
Jag separerar alltså min text från det dynamiska - unobtrusive javascript helt enkelt. Det betyder att sidan fungerar exakt lika bra utan att ha det på, och en användare kan stänga av javascript när som helst.
Hur tänkte du dig att man skulle gör det? Skriva:
<a href="javascript:window.open('lol.htm', ' ... ', ' ... ')">Min länk</a>?
Det är väl inte semantiskt rätt eller bra ut tillgänglighetssynpunkt? Då kommer ju inte länken fungera för de utan javascript.
Men:
<a href="lol.htm" onclick="window.open(this.href, ' ... ', ' ... );">Min länk</a> ...säger ni då - nä det är bättre, men ändå inte helt okej. Nu har vi ju en jobbig javascript snutt i dokumentet - och funktionaliteten är helt enkel inte separerad från presentationen. Om du vill att alla sidor som tidigare öppnades utåt ska nu öppnas i en iframe eller i samma fönster - då måste du ju ändra alla attribut.
<a href="lol.htm" title="title" rel="external">Min länk</a> Nu vet vi att alla med denna rel-grej går ut från sidan. Mkt bättre då vi kan ändra alla länkar genom att ändra en liten liten grej i javascriptet, och de clienter som inte har JS på, kan ändå använda länken.
Det är bara att förstå att target är ett DOM attribut som sköter dynamiken/beteendet på sidan (i motsats till html som sköter markup och innehållet), och är därför på rätt ställe - i beteende-lagret, om man så vill.
InsiderMedlem sedan jan. 2000978 inlägg Precis så här skulle koden se ut:
<a href="lol.htm" title="title" rel="external">Min länk</a>
Inga onclick-attribut eller javascript:window.open-länkar som du föreslog.
Det är precis samma princip med Unobtrusive Javascript som du själv föreslår. Skillnaden är att man öppnar alla länkar med attributet rel="external" med javascript och window.open.
Varför inte använda javasscript för sina beteenden fullt ut när det finns en metod för att öppna nya fönster istället för att manipulera DOM-trädet och stoppa in ett attribut som bara gör samma sak? (och inte validerar xhtml-strict)
echoSweMedlem sedan nov. 20041 189 inlägg Ffs insider. Jag sade att man INTE skulle skriva så och så visade jag exempel på HUR MAN INTE SKULLE SKRIVA! Läs igenom mitt inlägg en gång till så kanske du klarar av att se det.
HTML-koden är det som ska validera! Och varför? Jo, för att alla webbläsare ska kunna visa den. Därför flyttar man beteende från presentationen. Alla webbläsare stödjer DOM, och eftersom 100% stöd är det man eftersträvar så är det också det man får när man sätter attributet via DOM - det är inte samma sak som att sätta det med html, bara så du vet.
dAEkMedlem sedan feb. 20041 816 inlägg Hur man än vrider och vänder på det är det fel att påtvinga användaren nya fönster, tycker jag. Somliga blir helt förrvirrade av fler fönster.. men man kan ju låta besökarna bestämma själva genom att ge dem alternativet att kryssa i en ruta eller nåt om de vill att externa länkar skall öppnas i nya fönster. På så sätt kommer förhoppningsvis de kunnigare besökarna att se denna ruta medan de mindre kunnigare inte ser den(vanligast) eller inte inser fördelarna.
Aja, vet inte vad det är med mig men detta är liksom mitt redan bortredigerade inlägg off topic.. nåja.. :r
InsiderMedlem sedan jan. 2000978 inlägg
echoSwe skrev:
Ffs insider. Jag sade att man INTE skulle skriva så och så visade jag exempel på HUR MAN INTE SKULLE SKRIVA! Läs igenom mitt inlägg en gång till så kanske du klarar av att se det.
Jo, jag förstod att du inte menade att man skulle skriva så. Men det var heller inte vad jag menade. :h
echoSwe skrev:
HTML-koden är det som ska validera! Och varför? Jo, för att alla webbläsare ska kunna visa den. Därför flyttar man beteende från presentationen. Alla webbläsare stödjer DOM, och eftersom 100% stöd är det man eftersträvar så är det också det man får när man sätter attributet via DOM - det är inte samma sak som att sätta det med html, bara så du vet.
Att man flyttar sitt beteende från presentationslagret är jag helt med på, men varför inte flytta det till beteendelagret?
DOM är ju bara ett gränssnitt för att manipulera strukturen i ett dokument. Man kan ju knappast kalla det ett beteendelager som du föreslår i ett tidigare inlägg.
Kort och gott: finns det någon speciellt anledning att inte använda window.open? Det stöds ju av moderna webläsare såvitt jag vet...rätta mig om jag har fel. :)
jarvkloMedlem sedan juli 20013 378 inlägg hehe §jr - Skall vi diskutera
<div>
<script type="text/javascript">
document.write('<a href="#" target="_blank">Klicka på mig</a>');
</script>
</div>
i ett dokument kodat som HTML4.01 Strict nu? §e
IMHO belyser det exemplet problematiken lika bra som exemplet med DOM-anropet. Koden forcerar in strukturellt felaktig kod i ett dokument på ett sätt som flaggas OK pga att validatorerna idag bara gör en statisk kontroll av urprungskoden och på så sätt inte kan kontrollera konsekvenserna av scriptkodsexekvering... :birp
Kan vara praktiskt som sagt - men det är missbruk av begreppet "validerande kod" ;)
echoSweMedlem sedan nov. 20041 189 inlägg
jarvklo skrev:
Kan vara praktiskt som sagt - men det är missbruk av begreppet "validerande kod" ;)
Funkar inte om man använder application/xhtml+xml som mime type med XHTML 1.1...
echoSweMedlem sedan nov. 20041 189 inlägg
Insider skrev:
Jo, jag förstod att du inte menade att man skulle skriva så. Men det var heller inte vad jag menade. :h
Ojsan, ursäkta då :OO
Beror på hur man betonar det du skrev :)
Insider skrev:
Att man flyttar sitt beteende från presentationslagret är jag helt med på, men varför inte flytta det till beteendelagret?
DOM är ju bara ett gränssnitt för att manipulera strukturen i ett dokument. Man kan ju knappast kalla det ett beteendelager som du föreslår i ett tidigare inlägg.
Kort och gott: finns det någon speciellt anledning att inte använda window.open? Det stöds ju av moderna webläsare såvitt jag vet...rätta mig om jag har fel. :)
Nej, det stämmer. Visst, man kan väl använda window.open också. Jag tycker dock fortfarande inte att att sätta en target genom dom är samma sak som att använda document.write eller att skriva det i html.
zcorpanMedlem sedan dec. 20042 245 inlägg
jarvklo skrev:
hehe §jr - Skall vi diskutera
<div>
<script type="text/javascript">
document.write('<a href="#" target="_blank">Klicka på mig</a>');
</script>
</div>
i ett dokument kodat som HTML4.01 Strict nu? §e
Den snutten är ogiltig även om skriptet inte körs... ;)
zcorpanMedlem sedan dec. 20042 245 inlägg
echoSwe skrev:
Funkar inte om man använder application/xhtml+xml som mime type med XHTML 1.1...
Jarvklo pratade om HTML 4.01.
Men låt oss istället använda:
<div/>
<script type="text/javascript">
var div = document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "div")[0];
var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
link.setAttributeNS(null, "href", "#");
link.setAttributeNS(null, "target", "_blank");
link.appendChild(document.createTextNode("Klicka på mig"));
div.appendChild(link);
</script>
Är det giltigt XHTML 1.1?
[ins]
echoSwe skrev:
Jag tycker dock fortfarande inte att att sätta en target genom dom är samma sak som att använda document.write eller att skriva det i html.
Om du tar "View Selection Source" i Firefox så ser du att du faktiskt sätter ett target-attribut till märkkoden via DOM. Det är det enda koden gör - det öppnar inte ett nytt fönster i sig självt. Det vill säga, du kan inte få DOM attributet 'target' att öppna ett nytt fönster utan en HTMLAnchorElement. [/ins]
jarvkloMedlem sedan juli 20013 378 inlägg
zcorpan skrev:
Den snutten är ogiltig även om skriptet inte körs... ;)
Hehe. Men den går igenom validatorn (vilket på sitt sätt också ingår i det jag försöker säga om tricks för att leva upp till en fläckvis ganska buggig validator)
Glömde visst kommentarstecknen som motverkar *det* problemet i hastigheten ;) - Får väl skylla på att jag inte brukar bädda in kod på det sättet så ofta numera ;)
<div>
<script type="text/javascript">
<!--
document.write('<a href="#" target="_blank">Klicka på mig</a>');
// -->
</script>
</div>
echoSwe skrev:
Funkar inte om man använder application/xhtml+xml som mime type med XHTML 1.1...
Inte i någon av de tre XHTML 1.0-varianterna sänd som application/xhtml+xml heller - Bara i HTML4 som jag också påpekade :birp