jQuery Fallen im Internet Explorer

In letzter Zeit bin ich immer wieder über Probleme mit dem IE im zusammenhang mit jQuery gestoßen. Weil ich zu den Problemen wenig nichts im Netz gefunden habe, gibt es diesen Beitrag.

Das erste Problem, was sich recht schnell lösen lässt, ist, dass der Internet Explorer zuweilen das $-Zeichen nicht mag und einen Fehler ausgibt, dass er das Element nicht kennt. Mein Lösungsvorschlag: Entweder die noConflict()-Funktion von jQuery verwenden oder, was ich besser finde, "$" einfach durch "jQuery" ersetzen.

Jetzt wird es schon etwas interessanter. Problem Nr. 2:
Der IE will in einigen Fällen Elemente, die einfach per ID angesprochen werden nicht kennen. Beispiel:

$("#loaderBox").html("test");

Eine Logik konnte ich hinter dem Problem nicht erkennen, meine Lösung jedenfalls ist, vor jedes per ID ausgewählte Element den jeweiligen Elementtyp zu schreiben:

$("div#loaderBox").html("test");

Und jetzt zur letzten Falle, in die wir beim IE leicht tappen können und die das Senden eines XMLHttpRequests (Ajax-Request) im Internet Explorer aller (zumindest 7 und 8) Versionen unmöglich macht und mit der netten Meldung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht. (Bezieht sich auf das gerade genannte XMLHttpRequest-Objekt) quittiert wird. Das Problem ist die Stelle der Definition der jQuery Javascript-Datei - Ich hatte mein jQuery-File natürlich sauber im Head definiert. Ich zitiere selfHTML:

Es ist unter JavaScript-Programmierern zur Gewohnheit geworden, einen solchen Bereich [Javascript-Tag] im Kopf der HTML-Datei, also zwischen <head> und </head> zu definieren.

- selfHTML

Nach einigen Gläsern Tee und einer Menge verbratenen Hirnzellen, offenbarte sich mir die Lösung des Problems: Das jQuery-Script im Body definieren. Ist nicht schön, aber funktioniert - Ich muss mich in dieser Angelegenheit wohl dem IE geschlagen geben..

jQuery und php Offline-Dokumentationen

Wenn man im Urlaub zum offline-coden gezwungen wird, weil die Internettarife oder der fehlende Breitband-Ausbau es nicht anders zulassen, tut man gut daran sich vorher die wichtigsten Dokumentationen für die verwendeten Programmiersprachen lokal zu speichern. In meinem Fall (für meinen Spanienurlaub) waren es zwar nur zwei, die waren dafür aber umso hilfreicher - Die Dokumentationen (Funktionsreferenzen) für php und jQuery. Für Interessierte gibt es nachfolgend die entsprechenden Download-Links:

Jetzt stellt sich nur noch die Frage, wie man überhaupt im Urlaub auf die Idee kommt zu programmieren...

Ein bisschen hübscher

Wer sich diese Seite im Firefox anschaut, wird Seit ein paar Tagen mit "runden Ecken" verwöhnt - Seit heute gibt es auch den leicht überarbeiteten Header. Den Ball wird man recht schnell entdecken, ich habe aber noch eine weitere Überraschung eingebaut, wenn man mit der Maus über den Schriftzug im Kopfbereich fährt.

PS: Das ich mit dem Design keinen Schönheitswettbewerb gewinnen werde ist mir klar, aber als Spielwiese eignet sich die Seite doch hervorragend..

Google Analytics Plugin für Habari

Ich bin momentan dabei meine Habari-Installation weiter aufzuwerten mit diversen nützlichen Plugins - Heut ist ein weiteres sehr interessantes hinzugestoßen: Das Google-Analytics-Plugin für Habari-Blogs.

Auf der oben verlinkten Seite gibt es verschiedene Versionen zum Download, wobei sich die aktuellste natürlich anbietet. In meinem Fall war es das Paket "googleanalytics-0.6-0.5.2.zip". Nach der Installation (Verschieben der entpackten Daten nach /user/plugins/googleanalytics/) wird das Plugin im Administrationsbereich aktiviert (Menüpunkt "Plugins") und kann dann konfiguriert werden. Auf die Einstellungen gehe ich auch kurz ein:

Analytics Client Code
Ist der Tracking-Code, den man von Analytics bekommt - Hat das Format: UA-12345678-1 (Direkt im Dashboard für jede Seite gelistet)
Track logged-in users too
Diese Option habe ich nicht aktiviert, da ich so Statistiken bekomme, die meine eigene Nutzung als Administrator ausschließen
Track outgoing/download/mailto links
Schaden kann es nicht, alles zu tracken, was so passiert...
File extensions to track (comma separated)
Ich biete keine Dateien auf meiner Website an (Downloads, pdf-Dateien, etc.), daher habe ich hier keine Filter definiert. Gerade pdf, zip und evtl. Grafiken könnten hier aber notiert werden.
Cache tracking code file locally
Diese Option bewirkt, dass die ga.js (Analytics-JavaScript) nicht mehr bei google angefragt werden muss, sondern lokal gecached wird. Diese Option ist in jedem Fall empfehlenswert, weil es Geschwindigkeitsvorteile bringen kann und man unabhängig vom Drittanbieter ist. Zusätzlich kann man die eigenen JavaScripts zusammenfassen und damit HTTP-Requests sparen.

(Ich habe tatsächlich das erste Mal in meinem Coder-Dasein eine HTML-Definitionsliste verwendet! Ein Blick in den Quelltext [Link nur für Feuerfüchse] lohnt sich.)

Falls sich jetzt jemand von meiner Website gestalked fühlt: JavaScript und Cookies deaktivieren - dann bekomme ich von eurem Besuch nichts mit ;)

Short php-Tips

Bei Smashing-Magazine gibts im Moment php-Bücher zu gewinnen, Teilnahmebedingung war der Post von kurzen php-Tipps. Mein Beitrag gibts als Kopie auch hier im Blog:

---

I got three short tips for you:

##### 1. The "++-Tipp" #####

// it is very useful to know the difference between ++$var and $var++ (also works with --)

$value1 = $value2 = 6;

echo 'value1: ' . $value1++ . ' - value2: ' . ++$value2;
echo '<br>';
echo 'value1: ' . $value1 . ' - value2: ' . $value2;

// while ++$var first increases the var, $var++ is used before increasing


##### 2. The "dirname-Tipp" #####

// if you use files that are included in another script, it is helpful to use the dirname(__FILE__)
// function in includes, because it avoids trouble with paths later

// file1.php located at ../php/scripts/file1.php
<?php
include('../includes/file2.inc.php'); // will work
include(dirname(__FILE__) . '/../includes/file2.inc.php'); // would be better
?>

// file2.php located at ../php/includes/file2.inc.php
<?php
//include('./file3.inc.php'); // will not work!
include(dirname(__FILE__) . '/file3.inc.php'); // will work
?>

// file3.php located at ../php/includes/file3.inc.php
<?php
echo 'everything okay..';
?>

// so if you use the dirname(__FILE__)-function that returns the absolute path of the current
// file, you are safe if the file is included somewhere later


##### 3. The "short-if-Tipp" #####

// if you have to do a little decision in your code, the short if can be useful

$rand = round(rand());

echo '$rand is: ' . (($rand) ? 'one' : 'zero');

// the syntax is "(condition) ? return if condition is true : return if condition is false"

Greets, Felix

edit:
Ich habe die css-Datei für das Syntax-Highlighting-Plugin modifiziert (Scrollbar und Dateigröße verringert).
Wer sie findet, darf sie nutzen ;)

 1 2 3 Weiter →

Über

Benutzer