03. januar 2009 - 12:37Der er
36 kommentarer og 2 løsninger
Hvis IE bruges gør dette, ellers…
Lige først skal vi have nogle regler… Vi diskutere ikke om det er rigtigt at bruge xhtml eller hvilken mime type man bør sende. Til sagen… Jeg søger et php script som kan sende en besked hvis det er IE der bruges, og hvis det er en anden browser så skal den sende en fælles besked. Jeg vil tro at det ser sådan ud der mangler bare lidt koder. hvis browseren er IE { Header("Content-type: text/html"); include("mappe/filnavn.php"); } Ellers { Header("Content-type: application/xhtml+xml"); }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
hmmm, det var da sjovt :? Her er starten af html dokumentet... <?php //Dette sker altid Header("content-language: da"); header("Content-Type: iso-8859-1");
//Dette sker kun når det er en IE browser if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { Header("Content-type: text/html"); }
//Dette sker når det ikke er en IE Browser else { Header("Content-type: application/xhtml+xml"); echo '<?xml version="1.0" encoding="iso-8859-1"?>'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>...
Jeg får denne meddelse i FF Denne XML-fil har ingen stilinformation tilknyttet. Dokumenttræet vises herunder.
Så fik jeg det til at virke. @Jensqram Jeg ved ikke hvorfor men jeg kunne bare ikke få det til at virke med den kode som du har.
@micc Du må meget gerne ligge et svar.
----------------- Min endelige kode ser sådan ud...
<?php //Dette sker altid Header("content-language: da");
//Dette sker kun når det er en IE browser if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { Header("Content-type: text/html charset=iso-8859-1" ); }
//Dette sker når det ikke er en IE Browser else { Header("Content-type: application/xhtml+xml charset=iso-8859-1" ); echo '<?xml version="1.0" encoding="iso-8859-1"?>'; } ?>
nææ der manglede en ; <?php //Dette sker altid Header("content-language: da");
//Dette sker kun når det er en IE browser if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { Header("Content-type: text/html; charset=iso-8859-1" ); }
//Dette sker når det ikke er en IE Browser else { Header("Content-type: application/xhtml+xml; charset=iso-8859-1" ); echo '<?xml version="1.0" encoding="iso-8859-1"?>'; } ?>
Der er vist en del om XHTML, du skal have lært ;o)
Det giver ikke mening at serve XHTML 1.0 Transitional med andet end 'text/html' - eller at bruge en XML-deklaration. XHTML 1.0 Transitional er HTML - ikke XML - og vil altid blive parsed som HTML i alle browsere. Det _skal_ den i følge standarden.
Derimod giver det ikke mening at serve andre XHTML-dokumenter som 'text/html'.
Husker du forøvrigt at skrive dine JavaScripts til XML-DOM? Ellers kan det være rystende ligegyldig, hvilken MIME, du server dokumenterne med.
HTML 4.01 er stadig den (s)eneste standard, som er understøttet på WWW, så dén kan du ligeså godt bruge. Der er ingen fremtidssikring i dagens XHTML-standarder, da du alligevel skal skrive koden helt om, når XHTML 2.0 udkommer og bliver understøttet.
Til den tid lærer du at skrive XHTML-markup på et kvarter - så lidt adskiller det sig fra HTML. Brug i stedet tiden på at lære, hvad XHTML er - og ikke mindst, hvordan du scripter mod XML-DOM'en. Det er formodentlig dér den helt store udfordring ligger ;o)
PS: ANSI (f.eks: iso-8859-1) har været deprecated i JS i årevis, så du skal nok overveje at bruge utf-8, hvis du vil udveksle data med resten af verden - og evt. gøre brug af Ajax (som er en umulighed med ANSI)
Tak, jeg har faktisk læst de 2 artikler meget igennem, og da jeg også er forholdsvis nybegynder tager jeg det for ende af. Hvad må du gætte dig til :D Jeg har nu også planer om at ændre koden til XHTML 1.1 men der er lige nogle ting jeg skal vide inden da.
Med hensyn til XML-DOM så går jeg ud fra at du mener dette. <script type="text/javascript"> //<![CDATA[ //kode //]]> </script> Som jeg skriver :D
Men jeg er på din side omkring XHTML, jeg skriver bare XHTML nu.
PS: Jeg kan se at FF reagere meget mere på en fejl hvis jeg sender Content-type: application/xhtml+xml;
Men det er ca. 2 uger siden jeg begyndte på PHP Og 4 måneder siden jeg begynde på XHTML Så ja der er meget jeg skal have lært :D
Der får vi bl.a. helt nye XMLEvents - og ikke mindst bliver vores nuværende forms udskiftet med XForms. Egentlig var det også meningen, at img, b og i skulle udgå, men det venter man af hensyn til bagudkompatibilitet desværre med til en senere version.
Nej, det var ikke CDATA-escaping, jeg mente. Du kan f.eks. ikke bruge: var o = document.getElementById("mitDiv"); o.id = "noget";
Du kan ikke læse/sætte properties direkte. De skal sættes med setAttribute og læses med getAttribute. Der er heller ikke noget, der hedder: ELEMENT.onclick = function(){alert("Hep")};
Du skal i stedet bruge addEventListener, som IE godtnok endnu ikke forstår. Den vil have attachEvent.
Det er dét, jeg mener med at bruge XML-DOM i stedet for den gamle (og ofte proprietære) HTML-DOM =)
Hvis du sender Content-Type: application/xhtml+xml (bemærk stort T) så vil Firefox brokke sig gevaldigt, hvis du ikke serverer valid XML. Det hedder "draconian error handling" og idéen er, at hvis man ikke som minimum serverer valid XML (i.e. korrekt formateret etc.) så bør fortolkeren ikke engang _forsøge_ at parse det. Det vil nemlig blot være gætteri!
<?php //Dette sker altid Header("content-language: da");
//Dette sker kun når det er en IE browser if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { Header("Content-type: text/html; charset=iso-8859-1" ); }
//Dette sker når det ikke er en IE Browser else { Header("Content-type: application/xhtml+xml; charset=iso-8859-1" ); echo '<?xml version="1.0" encoding="iso-8859-1"?>'; } ?>
til at virke, så bør du også kunne få følgende i spil:
Og udover jensgrams helt korrekte iagttagelse, brokker den sig også over visse script-/DOM-fejl.
At det så er komplet sort, at Mozilla har forsøgt at implementere innerHTML i FF's XHTML-DOM lag, er en helt anden ting! Firefox' DOM-lag sutter desværre generelt r*v ... big-time!
Jens >> Husk lige, at også Opera og Konqueror (og muligvis flere) skriver 'MSIE' i USER_AGENT feltet i HTTP-headeren i deres default opsætning.
Man skal yderligere diskriminere på strengen 'opera' og 'konqueror' - og så er det godt, at gøre alt upper- eller lowercase. Det øger sikkerheden for, at man gør, hvad man vil ;o)
olebole > Ja, upper/lower er altid værd at huske :) I sidstnævnte er det dog kun MIME-typen, og vil den ikke altid være lowercase? (Jeg spørger blot fordi jeg ikke aner om man kan stole på det.)
Hvis ikke:
- if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml') !== false) { + if (isset($_SERVER['HTTP_ACCEPT']) && strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'application/xhtml+xml') !== false) {
"Vi diskutere ikke om det er rigtigt at bruge xhtml eller hvilken mime type man bør sende." - ok, men det gør vi så alligevel. "Og 4 måneder siden jeg begynde på XHTML" - så er du vel stadig modtagelig overfor visdom fra de lærde ;)
Sådan meget kort sagt: Hvorfor XMTHL, når du ser hvilke problemer det giver? Et det for at få lidt "street-credit" overfor vennerne, så er det ok med mig. Men er det fordi du har et budskab du vil have ud - altså et website med indhold - så vil jeg mene, og næppe stå alene - at et fornuftigere valg ville være HTML 4.01, og gerne STRICT, hvis du skal have dine street-credits. Du skal alligevel lave det hele om når XHTML engang, måske, kan bruges til noget.
- og da jeg hermed erfarer, at begrebet street creed er nået helt ud til de yderste sfærer af kolonimagtens besiddelser, må det afgjort betragtes som et argument, der bør vægtes behørigt! :)
Erik, det må vist blive årets første kryds i kalenderen ;D
Hermed det svar som andreas13_fam udbad (udbedte?) sig. :) Du må dog meget gerne dele pointene med de andre kloge hoveder der har kommet med guldkorn.
Med hensyn til xhtml, så er jeg enig i at det ikke kan betale sig at gå op i hvis der er tale om en almindelig offentlig webside der skal virke for alle brugere - for alt det besvær du gør dig er den eneste belønning at den bliver vist 10ms hurtigere i de browsere der får served det som application/xhtml+xml (og som forstår det naturligvis).
Hvis man derimod ikke har brug for at understøtte IE overhovedet (hvilket er tilfældet for et af mine nuværende projekter), så kan der være gode fordele at hente ved at bruge xhtml1.1, fx kan SVG grafik inkorporeres direkte i dokumentet uden at skulle gøre brug af forskellige (ofte ikke-valide) browserspecifikke dokumenter. Fremtiden hvor også IE har ordentlig understøttelse for XHTML og dets muligheder er dog desværre meget fjern, så til almindelige hjemmesider går den ikke. :(
@23:51:45 - Ja, det er jeg klar over at du mente :) -- Men det er da altid god skik at upper/lower inden sammenligning - uagtet om det er USER_AGENT eller ACCEPT.
@23:54:29 - I må meget gerne diskutere det. Grunden til at jeg skræv det var fordi at jeg vidste (Som i kan se) at der ville blive diskuteret, og så ville mit spørgsmål blive sat til siden.
@street-credit - Nej jeg har ikke behov for street-credit (men det skader ikke :D), men man har vel lov til at øve sig på XHTML, og jeg går ud fra at XHTML x.x - STRICT er tætter på XHTML 2.0 end HTML 4.01 - STRICT. Hvis jeg skulle lave en hjemmeside som skulle bruges til noget seriøst. ville jeg lave den i HTML 4.01 - STRICT. Men det skal men "øve-side" ikke rigtig.
"jeg går ud fra at XHTML x.x - STRICT er tætter på XHTML 2.0 end HTML 4.01 - STRICT" - det tror jeg ikke. XHTML 2.0 vil være markant anderledes end hvad vi kender til.
- og mellem XHTML 1.0 og HTML 4.01 er forskellene næsten ikke eksisterende, hvad markupkoden angår. Hvad script og DOM angår kan du ligeså godt øve dig i HTML 4.01, hvor du sagtens kan bruge den syntaks, der skal til under XHTML.
Sålænge, der er tale om lære/lege sider, kan jeg dog godt forstå, du gerne vil teste og rode med XHTML ;o)
Jeg syntes nu stadig at det er en omvending at skrive <br /> og ikke <br>, og det er forskel nok for mig, til at jeg bil bruge det på mine lære/lege side. Og så er der også en hvis tilfredsstillelse i at se at ens koder er helt rigtigt skrævet, om det så HTML 4.01 STRICT eller XHTML 1.0+ .
Men som sagt... Hvis jeg skulle lave en hjemmeside som skulle bruges til noget seriøst. ville jeg lave den i HTML 4.01 - STRICT. Men det skal min "øve-side" ikke rigtig.
Så nu begynder det vist at blive endeløst skriverri.
-->jensgram ligger du et svar, så jeg kan dele pointne mellem micc og dig. Som micc forslog.
Ja, jeg erkender, at der nok er tale om endeløst skriveri, men glæd dig over, der er nogen, der gider forsøge at lære dig, hvad der er rigtigt og forkert ;o)
XHTML 1.0 Transitional skal ifølge standarden altid tolkes som HTML. Her opstår imidlertid en selvmodsigelse!
HTML bygger på - og skal overholde - SGML (Standard Generalized Markup Language). Ifølge SGML skal <br/> faktisk tolkes som <br>> - altså et br-element efterfulgt af en '>'. I head-elementet kan de imidlertid slet ikke bruges (her må jo ikke findes renderbare elementer), hvilket i virkeligheden gør meta- og link-elementer til det rene HTML-sovs.
Fænomenet kaldes 'NET-enabling start-tag' og er et ret komplekst emne i forhold til SGML og de forskellige HTML- og XHTML-varianter. For sjov kan du jo prøve at validere dette dokument:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <body>
<div/noget/
</body> </html>
- hvilket går glidende, omend det sker med en advarsel om, at browserne ikke viser, hvad de egentlig burde, og man derfor opfordres til at undgå syntaksen. Koden i body-elementet burde nemlig tolkes som: <div>noget</div>
Det er med andre ord noget vrøvl at bruge XML-lukninger af 'tomme' tags i markup-kode, der skal tolkes som HTML. Det gælder vel at mærke ikke kun XHTML 1.0 Trans, men også XHTML 1.0 Strict, hvis den serves som 'text/html'. XHTML 1.1 må slet ikke virke som 'text/html'.
Jeg finder det ikke spor tilfredsstillende, hvis min kode kun fungerer på grund af browserbugs. Jeg kan rigtig godt lide, at der er begrundelse for de ting, jeg gør og den kode, jeg skriver ... men ved udmærket, at andre kan finde problemerne/overvejelserne akademiske ;o)
Nu skal jeg nok lade være med at spamme dig mere - men husk, at vi bare prøver at gøre dig klogere på, hvad der er op og ned i det omfang, vi formår det. For som du ser, er det ret komplekst (og du har masser til gode endnu, men det bliver alt for langt til en E-tråd) ;o)
Olebole jeg læser skam også med stor interesse. Jeg tror nu efterhånden at jeg har fået lidt styr på det. HTML 4.01 er pt standarten på WWW XHTML 1.0 skal serveres med text/html XHTML 1.1 skal serveres med application/xhtml+xml, men bliver serveret med text/html XHTML 2.0 bliver den næste standart og bliver altid serveret med application/xhtml+xml IE forstår endnu ikke application/xhtml+xml Der er stor forskel på på XHTML 1.1 og 2.0 Olebole og mange andre skal have respekt for den viden de har og deler, det er DET som giver street creed :D
XHTML 1.0 Trans _skal_ serves som 'text/html' XHTML 1.0 Strict _må_ serves som 'text/html'
- ellers har du helt ret. Tak for rosen ;o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.