webForumDet fria alternativet

xhtml sniff script

11 svar · 842 visningar · startad av nilleonline

nilleonlineMedlem sedan sep. 2006119 inlägg
#1

Jag har tänkt att använda ett sniff script på min sida. Det ska skicka ut xml till alla läsare som stödjer det och vanlig html till de som inte stödjer det. Jag hittar inget sådant script i asp, så om ni vet något så får ni gärna ge mig!

Jag vill inte skapa olika sidor för de 2 typerna utan vill bara att scriptet ska skriva ut olika doctypes beroende på stöd. Hur gör jag det? och hur blir det då med tex <br /> taggar? gör det någonting att de är avslutade i html?

TroxyMedlem sedan mars 20041 505 inlägg
#2

Du behöver inte oroa dig för taggar och doctypes. I princip alla webbläsare stödjer XHTML-kod, eftersom dom tolkar det som vanlig HTML-kod. Så du kan skicka ut XHTML-kod med tillhörande doctype utan att behöva oroa dig.

Problemet ligger istället i vilken MIME-typ man serverar sin sida som. Alla webbläsare har stöd för "text/html", men vissa (eller ja, IE) saknar stöd för "text/xml" eller "application/xhtml+xml".

Webbläsarna skickar ut en "HTTP_ACCEPT"-header som talar om vilka MIME-typer som dom accepterar. I ASP så kommer du åt den såhär:

Request.Servervariables("HTTP_ACCEPT")

I den strängen kan man söka efter om webbläsaren har stöd för någon xml-typ.
Här är ett ASP-script som kollar om en webbläsare har stöd för "application/xhtml+xml"

<%
If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/xhtml+xml") > 0 
Or InStr(Request.ServerVariables("HTTP_USER_AGENT"), "W3C_Validator") > 0 Then
    Response.ContentType = "application/xhtml+xml"
    Response.Write("<?xml version=""1.0"" encoding=""iso-8859-1""?>" & VBCrLf);
Else
    Response.ContentType = "text/html"
End If
Response.Charset = "iso-8859-1"
%>

Källa: http://www.456bereastreet.com/lab/developing_with_web_standards/sv/xhtml/

nilleonlineMedlem sedan sep. 2006119 inlägg
#3

Tack! Men hur ska jag nu få det att fungera? Jag är välldigt grön på asp så. jag la koden högst upp i dokumentet, men det fungerade inte.

TroxyMedlem sedan mars 20041 505 inlägg
#4

Hm, på vilket sätt fungerar det inte? Vad händer? Händer inte, osv?

nilleonlineMedlem sedan sep. 2006119 inlägg
TravoniMedlem sedan okt. 20041 556 inlägg
#6
<%
If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/xhtml+xml") > 0 Or InStr(Request.ServerVariables("HTTP_USER_AGENT"), "W3C_Validator") > 0 Then
    Response.ContentType = "application/xhtml+xml"
    Response.Write("<?xml version=""1.0"" encoding=""iso-8859-1""?>" & VBCrLf);
Else
    Response.ContentType = "text/html"
End If
Response.Charset = "iso-8859-1"
%>

Radbruten. :)

nilleonlineMedlem sedan sep. 2006119 inlägg
#7

...

nilleonlineMedlem sedan sep. 2006119 inlägg
#8

Nu har jag fåt det att fungera halvt! Det skrivs ut en xml deklaration om xml stöds men hur gör jag för att skriva ut olika mime-types?

sen vill jag ochså skriva ut

<?xml-stylesheet type="text/css" href="styles.css" media="screen" ?>

under xml-deklarationen, och en vanlig

<link rel="stylesheet" type="text/css" href="/Styles/siteseeker.css" />

om inte xml stödjs.

TravoniMedlem sedan okt. 20041 556 inlägg
#9

lägg till det då. ;)

<%
If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/xhtml+xml") > 0 Or InStr(Request.ServerVariables("HTTP_USER_AGENT"), "W3C_Validator") > 0 Then
    Response.ContentType = "application/xhtml+xml"
    Response.Write("<?xml version=""1.0"" encoding=""iso-8859-1""?>" & VBCrLf)
    Response.Write("<?xml-stylesheet type=""text/css"" href=""styles.css"" media=""screen"" ?>" & vbCrLf)
Else
    Response.ContentType = "text/html"
    Response.Write("<link rel=""stylesheet"" type=""text/css"" href=""/Styles/siteseeker.css"" />" & vbCrLf)
End If
Response.Charset = "iso-8859-1"
%>
nilleonlineMedlem sedan sep. 2006119 inlägg
#10

Jo så långt kom jag ochså, men problemet då är att <link rel=""stylesheet".. skrivs ut högst upp i dokumentet och inte innom head tagarna. och så skrivs inte meta-mime taggen ut alls heller..

TroxyMedlem sedan mars 20041 505 inlägg
#11

Du behöver ingen meta-tagg för MIME. Du sätter ju MIME-typ med Response.ContentType.

nilleonlineMedlem sedan sep. 2006119 inlägg
#12

Tack för all hjälp! Nu återstår bara en sak så att det ska fungera. Hur fixar jag så att:
<link rel=""stylesheet"" type=""text/css"".. inte hamnar högst upp i dokumentet utan innom head-taggarna, om någon orkar hjälpa mig med det..

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