Hallo dr.e.,
zu meiner eigenen Schande muss ich gestehen, dass ich mich selber erst in die Thematik einarbeite(n muss).
So wie ich es bis jetzt verstanden habe, implementiert der IE (6.0) teilweise DOM Level 3.
Dies aber auch nur für HTML und CSS - also eingeschränkt.
Das XMLHTTPRequest-Objekt ist aber nicht Teil des DOM, da die eigentliche Funktionalität nämlich wie folgt definiert ist:
Zitat:
|
"DOM Level 3 Load and Save" defines a model for scripts to transfer information back and forth between XML documents and DOM structures.
|
Zitat:
|
Zitat von http://developer.mozilla.org/de/docs/AJAX:Getting_Started XMLHTTP wurde ursprünglich im Internet Explorer als ein ActiveX-Objekt eingeführt. Später implementierten Mozilla, Safari und andere Browser eine Klasse namens XMLHttpRequest, welche die Methoden und Eigenschaften des originalen ActiveX-Objektes von Microsoft unterstützt. |
Du erzeugst im IE demnach auch kein JavaScript, sondern ein
ActiveXObject. Zumindest bei mir sieht es so aus:
Code:
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
(Auch von AJAX:Getting_Started)
Zitat:
|
Zitat von dr.e. RTFMs are welcome! |
Ich persönlich finde es sehr schwer, alle möglichen Abhängigkeiten vom Doctype usw.
in den einzelnen W3C Dokumenten im kompletten Zusammenhang zu betrachten.
Du musst wirklich viele Eigenheiten beachten - bei jedem Browser andere.
Eventuell ist es auch anderen eine Hilfe, wenn ich die Ergebnisse meiner Recherche zum
Thema bzw. meine Erfahrungen kurz
präsentiere:
Entwickle nach Standards!
Nutze einen Browser, der weitestgehend alle Standards unterstützt. Welche das sind und
welcher Browser diese unterstützt kannst du z.B. unter [1] in Erfahrung bringen.
Plane die Entwicklung im Voraus - mit Transcendent CSS
Es ist sehr wichtig, im Voraus zu entscheiden, welche Browser in welcher Art unterstützt werden sollen.
Da der IE 6/7 eigentlich immer dabei ist, muss man sich im Voraus für etablierte Methoden wie
"Progressive Enhancement" etc. entscheiden. Die Vorstellung, dass alle Browser das gleiche sehen
ist genau genommen absurd. Wer HDTV möchte kauft sich einen neuen Fernseher, wer einen alten
Fernseher hat bekommt zwar ein schlechteres aber akzeptables Bild.
Wozu lade ich mir einen neuen Browser wenn alle Webseiten sowieso im IE 6 gleich aussehen?
Ähnlich ist es mit AJAX. Ich verfolge zurzeit den Ansatz, AJAX zwar bewusst einzuplanen,
entwickle meine Seiten aber erst ohne. Ist dieser Schritt getan, kann ich nach und nach neue
Features auf AJAX-Basis einbauen.
Dazu ist es wichtig, dem Kunden Accessability und Usability zu erklären.
Was ist Transcendent CSS?
Dem gleichnamigen Buch von Andy Clarke ist dazu folgendes zu entnehmen:
1.) Nicht alle Browser sehen das gleiche Design
2.) Nutze alle Verfügbaren CSS-Selektoren.
3.) Nutze CSS3, wo es möglich ist, um zukunftsfähig zu bleiben.
4.) Stopfe die Löcher von CSS mit JavaScript und dem DOM.
5.) Vermeide den Gebrauch von Hacks und filtern.
6.) Nutze semantische Namenskonventionen und Mikroformate.
7.) Gib deine Ideen weiter und arbeite mit anderen zusammen.
Mehr fällt mir dazu auf Anhieb nicht ein, daher ein wenig Praxis:
Für die Entwicklung nehme ich FireFox mit der tollen Toolbar und Opera (jeweils in der neusten Versionen).
Das HTML-Markup muss stimmen, damit ich später mit JavaScript darauf zugreifen kann.
Außerdem soll kein Browser in den "Quirks-Modus" wechseln, sonnst wird die Formatierung
per CSS unkontrollierbar. Das Markup steht zunächst im Vordergrund.
Die Struktur meiner Seite ist so angeordnet und durch Sprungmarken ergänzt,
dass Screenreader einfach und schnell Inhalte erfassen können.
Der Grundaufbau meiner XHTML-Datei gestaltet sich wie folgt:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>Mein erstes XHTML-Dokument</title>
<link rel="stylesheet" type="text/css" title="Stylesheet" href="css/basic.css" />
<script type="text/javascript" src="js/script.js"></script>
</head>
<body>
<h1>Seitentitel</h1>
Inhalt äöü</p>
</body>
</html>
Das W3C sieht für XHTML standardmäßig eine UTF-8 Kodierung aller Dokumente vor.
Ist dem nicht so, kann per meta-Tag oder besser noch vom Server die Kodierung geschickt werden.
Ein
<?xml version="1.0" encoding="utf-8" ?> ist also hinfällig und provoziert im IE
sowieso nur wieder den Quirks-Mode.
Trotzdem habe ich für den IE per meta-Tag den Content-Type angegeben.
Dieser wird aber nur als ersten Kind-Element von vom head-tag akzeptiert.
Auf Serverseite schicke ich per
header() als Content-Type: application/xhtml+xml;
an den Browser. Da ich mit FireFox und Opera entwickle werden mir so Fehler im Markup direkt
angezeigt. Geht die Seite online steht auch hier nur "text/html" im Header da der IE
sonnst die Seite downloaden möchte.
JavaScript und CSS sind ausgelagert. Die CSS Datei enthält @import und/oder @media Regeln.
Von daher ist es auch hinfällig das media-Attribut zu benutzen.
Ist die das Markup fertig gestellt und per CSS formatiert, wird das ganze im Template-System eingebunden.
Somit ist die Seite auf der einen Seite barrierefrei und auf der anderen Seite schön anzusehen - je nach Browser.
Nun wird die Website - pardon, Webapplikation - per JavaScript mit Zusatzfeatures aufgewertet.
Dabei arbeite ich Vorzugsweise mit Frameworks wie jQuery. Das Framework greift mir
vor allem bei unterschieden in der JavaScript implementierung der jeweiligen Browser
unter die Arme. Außerdem kann ich sehr komfortabel per XPath oder auch mit
CSS3-Selektoren auf einzelne DOM-Knoten zugreifen und diese erweitern.
Ein weiterer Vorzug von jQuery ist die implementierung des "onload" Events. Dieses wartet nämlich
nur auf das DOM und nicht etwa auf Grafiken oder Banner - bringt einen Geschwindigkeitsvorteil.
[1]
http://www.webdevout.net/browser-support-dom
Weitere nützliche Links:
http://developer.mozilla.org/de/docs/AJAX http://schneegans.de/web/xhtml/ http://de.selfhtml.org/html/xhtml/unterschiede.htm
PS:
Warum schreibe ich das alles? Ich bin mir bei einigen Dingen auch nicht sicher ob mein Vorgehen "richtig" ist.
Ich möchte möglichst standardkonforme, barrierefreie Webseiten entwickeln. Da der Dschungel an Tipps
und Meinungen zum Thema aber sehr dicht ist, bin ich mir sehr unsicher und lasse mich gerne belehren.
PPS: Stoff für ein Tutorial?
