Mein erster Versuch hier einen Artikel über Vererbung in JS zu schreiben, scheiterte an einem Punkt den ich übersehen hatte. Daher hier eine neue zweite Version. Ich werde den Artikel aber in drei Teile aufsplitten.
Der Mensch ist ein Gewohnheitstier und mich nehme ich davon nicht aus. Schlimm wird es, wenn Dinge, an die ich mich gewöhnt habe, sich ohne mein Wissen ändern. Automatische Updates, so nützlich sie auch sind, sind eine ideale Quelle für solche kleine Nicklichkeiten im Alltag.
Ich frag mich warum ich diesen Artikel nicht schon viel früher geschrieben habe. Ich habe diese Probleme schon viele Male gelesen und immer wieder musste ich selbst suchen wo das Problem liegt. Ich habe also oft genug selbst mit diesen Problemen zu kämpfen gehabt und habe wertvolle Lebenszeit damit verschwendet, Bugs zu finden, die keine waren.
Deshalb habe ich hier mal die Liste der größten und am schwersten zu findesten IE Bugs beim programmieren von Javascript, zusammengestellt.
Das war mir bisher nicht bewusst, wie wahrscheinlich vielen anderen auch nicht. Eine leere src-Angabe in einem img Tag verursacht einen Request und zwar auf das Verzeichniss in dem auch die eingebundene Seite liegt. Das Gleiche gilt für Bilder, die mit Javascript per new Image() erzeugt werden. Nähere Details beschreibt Nicholas C. Zakas auf seiner Seite.
Das Problem sind vor allem Server Skripte bzw. die darin enthaltenen Templates wo es schnell passieren kann, dass z.b. solche Einträge ein leeres src-Attribut erzeugen:
<img src="$variabel">
<img src="$variabel">
Es sollte zwar nicht kann aber u.U. vorkommen, wenn der Code einer dynamischen Seite nicht sauber programmiert wurde oder wenn ein Platzhalter vergessen wird.
Der einzige Browser, der sich davon nicht beeindrucken lässt ist Opera.
Vergleiche mit Javascript und ihre Merkwürdigkeiten. Eigentlich sollte man meinen, Vergleiche wären eine klare Sache. Entweder es ist etwas identisch oder nicht. Fertig!
So einfach ist es aber leider nicht. Da in Javascript eine automatische Typkonvertierung existiert, die zumindest in einen Sonderfall zu einem merkwürdigen Ergebnis führt. Entdeckt habe ich dieses Verhalten gestern in einem längeren Thread im selfhtml Forum. Dort war die Frage aufgetaucht, warum ("0" && "1") 1 ergibt (test). Im weiteren Verlauf stellten wir fest, dass die Vergleiche sehr seltsame Ergebnisse hatten. Z.b. der folgende Code:
var str ='0';
alert('str==true => '+(str ==true)+'n'+'!str==true => '+(!str ==true));
In den letzten Tagen hat die ganze Debatte um die bevorstehende Internetzensur noch mal richtig Schwung angenommen.
Schön zusammengefaßt, hat es die Süddeutsche. In dem Artikel werden noch mal alle Argumente, die gegen das Gesetz vorgebracht werden zusammengefaßt und auch die Kampagne im Internet richtig analysiert. Wie das aber auch in Hose gehen kann, zeigt dieser Kommentar in der Frankfurter Rundschau, von einem Politikprofessor(!). Dieser ist an Ahnungslosigkeit und Unterstellungen kaum zu überbieten. Da waren selbst die Aussagen von von Guttenberg in der Tagesschau harmlos. Das Internet wimmelt nach Auffassung des Profs. von Kommunisten und Anarchisten, die sich den Geschäftemachern in den Weg stellen und Kinderpornos verbreiten wollen:
Trotz gewaltigem Zuspruch bei der Internetpetiton gegen die Zugangssperre mißliebiger Inhalte, scheinen unsere gewähltem Volksvertreter diese Maßnahme sinnvoll zu halten, um ihre Zensurziele durchzusetzen. Laut Heise enthält der Entwurf nur kleine Änderungen im Detail und entspricht den fragwürdigen Vorgaben aus dem Hause der Familienministerin. Der AK Zensur hat darauf alle Gespräche mit dem SPD Verhandlungsführer abgebrochen
Sie planen, am Donnerstag die Büchse der Pandora zu öffnen. Daher sehen wir, die Internet-Community, keinen Grund mehr um weiter mit Ihnen zu reden. Alle weiteren Gespräche zu diesem Thema sagen wir hiermit ab. Dies gilt auch für Ihre Einladung für Mittwoch Nachmittag ins Paul-Löbe-Haus.
DNS Sperren sind nutzlos!
Das Prinzip, dass bei der Sperre eingesetzt werden soll, eine sogenannte DNS Sperre ist völlig ungeeignet um Internetseiten zu "sperren", es wird lediglich der normale Zugang über deutsche Provider etwas erschwert. Keiner der Konderporno Seiten besuchen will läßt sich davon aufhalten. Im gegenteil es würde mich wundern, wenn diese Leute nicht sowieso schon jetzt alles tun, um ihre Machenschaften zu verschleiern und dann wohl kaum von so einer Sperre beeindruckt sein werden.
Auf dieser Seite findet man z.b. eine Liste mit nicht zensierten DNS Servern, davon kann man einen auswählen und in den Netzwerkeinstellungen eintragen. Das ist (noch) völlig legal und ein Aufwand von wenigen Minuten, wenn man weiß wie sowas konfiguriert wird.
Das Schlimme bei dieser Art der Sperre ist, dass der Staat glaubt hier ein Mittel der Kontrolle der Inhalte des Internets in die Hand zu bekommen. Die ersten Äußerungen verschiedener Verbände, nach Wünschen von Sperrungen für ihre Zwecke sind auch schon vorhanden. Was kommt als nächstes?
Übrigens diesen Monat vor genau 60 Jahren ist 1984 von George Orwell das erste Mal erschienen. Ein Buch aktueller denn je.
Aktuell wird überall und dort, ein Video von Douglas Crockford gehyped, in dem dieser einige Aspekte von Javascript beschreibt. Der (englischsprachige) Vortrag unter dem Motto Javascript the good parts, geht tief in die Anwendung von Javascript.
Logisch! Douglas Crockford ist der Javascript Guru, insofern ist diese Aufmerksamkeit berechtigt. Aber seit gestern ist auf you tube ein weiterer hochinteressanter Javascript Vortrag im Google TechTalks Channel vorhanden. Unter dem Titel speed up your Javascript beleuchtet Nicholas C. Zakas die Interna von Javascript näher.
In dem einstündigen Vortrag erklärt Nicholas die Wirkungsweise von Javascript und wo mit diesem Wissen sich die Geschwindigkeit optimieren läßt.
Nachdem ich mich jetzt ein halbes Jahr lang mit dem neuen Firefox 3 rumgeschlagen habe und dabei vieles probiert, deinstalliert, installiert, Bookmarks gelöscht, about:config Tipps und was weiß ich noch alles, gemacht habe. Bin ich nun endlich auf die Lösung meiner Probleme mit diesem Browser gekommen.