WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   XHTML 1.0 Strict och target-attributet (https://www.wn.se/forum/showthread.php?t=14709)

Seattlegrunge 2006-06-18 07:35

Validerade en sida som har doctypen XHTML 1.0 Strict i W3C:s Markup Validation Service.

Validatorn kastar ut ett error på att jag har attributet target="_blank" i en a-tag!

Följande meddelande får jag:
Kod:

Error Line 25 column 102: there is no attribute "target".

...titletaggens innehåll" target="_blank"><img src="images/bildnamn.gif...

You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).

This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.

How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute.

Får man inte använda target-attributet? Får man inte lov att öppna nya fönster i strict-mode?!?! Verkar galet :)

Jag har två länkar på sidan med target="_blank" och den klagar bara på den ena, den första. Skumt!

Standout 2006-06-18 08:47

Det stämmer. Target-attributet är bortplockat ur xhtml 1.0 strict.

digiArt 2006-06-18 09:18

Du kan köra en javascriptlösning istället:
Kod:

function externalLinks() {
  if(!document.getElementsByTagName) return;
  var anchors = document.getElementsByTagName("a");
  for(var i=0; i<anchors.length; i++) {
    var anchor = anchors[i];
    if(anchor.getAttribute("href") && anchor.getAttribute("rel") ==
"external") {
      anchor.onclick =
function(){window.open(anchor.getAttribute("href"));return false;};
    }
  }
}
window.onload = externalLinks;

Sätt sedan rel="external" på de länkar du vill ska öppna i ett nytt fönster.

DeSoto 2006-06-18 12:24

Hela meningen med att target är borttaget är för att användaren själv ska få välja ifall sidan ska öppnas i ett nytt fönster eller inte. Ifall man vill tvinga användaren att öppna i nytt fönster bör man antingen köra med en annan doctype eller strunta i att sidan validerar. Att klydda med javascript bara för att få den att validera är oförståeligt för mig.

digiArt 2006-06-18 12:32

Citat:

Originally posted by DeSoto@Jun 18 2006, 12:24
Hela meningen med att target är borttaget är för att användaren själv ska få välja ifall sidan ska öppnas i ett nytt fönster eller inte. Ifall man vill tvinga användaren att öppna i nytt fönster bör man antingen köra med en annan doctype eller strunta i att sidan validerar. Att klydda med javascript bara för att få den att validera är oförståeligt för mig.
Hmm, håller med dig.

Men med samma resonemang kan jag som utvecklare undra varför en överordnad myndighet eller annan verksamhet ska besluta hur jag använder mig av länkar på mina sidor. Användaren kan fortfarande avgöra om hon eller han vill surfa i samma fönster, stäng av javascript helt enkelt :)

(Jag argumenterar inte mot dig, jag visar bara på en annan syn på saken)

guran 2006-06-18 13:32

Det fyller i princip inte så stor funtion i dagläget att ha en doctype med xhtml. Webbläsaren kommer att behandla den som html i alla fall. Vill du att en webbläsare ska tolka din kod som xhtml måste du skicka ut en MIME-typ enligt application/xhtml+xml. Om du är insatt i hur du kan ändra på MIME-typen så prova detta och ladda sidan med Opera, Firefox och MSIE. Om din kod är korrekt så funkar det fint med Opera och Firefox, men med MSIE blir det stopp (går möjligen bra i MSIE 7, har ej provat det).

Så i princip, om du vill använda fördelarna med xhtml, så får du kontrollera vilken webbläsare användare har och skicka MIME-typ application/xhmt-xml till webbläsare som du vet klarar av att hantera xhtml och MIME-typ text/html till de andra.

Vid tolkning av xhtml måste du även vara insatt i vilken javascrip som funkar och inte funkar med xhtml. CSS har några olikheter i xhtml och html.

Använd doctype HTML 4.01 strict i stället. Du kan ju alltid utveckla sidan med xhtml och skicka MIME-typ application/xhmt+xml så får du i FF och Opera veta vilka fel som finns i koden, för om du gör fel i xhtml så är den inte förlåtande utan din sida kommer bara att visa ett felmeddelande.

Seattlegrunge 2006-06-18 15:11

Jag gjorde som så att jag gick över till XHTML 1.0 Transitional istället.
För inte väljer jag att köra ett javascript för att öppna en länk i ett nytt fönster, även om det är en "ny feature" i XHTML Strict att användaren själv ska kunna välja i vilket fönster en länk ska öppnas.

Iallafall... med XHTML 1.0 Transitional fick jag "This Page Is Valid XHTML 1.0 Transitional!"

Nån som är mot min lösning tro? :)

ChristofferJ 2006-06-18 16:22

Brukar köra på Transitional också faktiskt.. det ska fungera utan problem. Jag anser i alla fall inte det vara fel .. dock en aning fegt kanske :).

SiC 2006-06-26 15:55

För att få sidan att validera, samtidigt som man öppnar i ett nytt fönster, så finns det två lösningar. Både innebär javascript, sen vilket man vill använda är mer en smaksak.

http://www.ansluten.net/index.asp?visa=artikellas&id=10


Alla tider är GMT +2. Klockan är nu 14:14.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson