Der Internet Explorer und Comboboxen

AJAX ist schon eine feine Sache. Wenn die Daten dann zurückkommen und man damit eine Combobox füllen möchte so sieht das meist so aus:

function showData() {
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
    document.getElementById("combobox").innerHTML = xmlHttp.responseText;
  }
}

Es gibt hierbei bloß ein Problem, der Internet Explorer mag es einfach nicht. Während dieser Code mit Chrome, Firefox, Opera et cetera wunderbar funktioniert, gibt es beim Internet Explorer ein Problem. Er hat Probleme mit dem innerHTML und füllt es einfach nicht.

Damit man nun nicht seinen ganzen Code umschreiben muss gibt es auf http://www.fpruefer.de/blog/archives/innerHTML-und-die-Select-Box-2009-08-04.html eine interessante Funktion welche sich das outerHTML nimmt (welches der Internet Explorer unterstützt) und dort die <select> Tags ausspart und nur alles zwischen diesen Tags ändert. Die Funktion welche die Arbeit dabei erledigt sieht dabei so aus:

function fillSelect(pList, pOptionHTML)
{
  if (pList) {
    if (pList.outerHTML) {
      var begin = pList.outerHTML.match(/(<select .*?>)/i);
      var end   = pList.outerHTML.match(/(<\/select>)/i);

      if (begin && end) {
        var s = begin[1] + pOptionHTML + end[1];
        pList.outerHTML = s;
      }
   }
  else {
    pList.innerHTML = pOptionHTML;
    }
  }
}

Angewendet wird sie dann so:

fillSelect(document.getElementById("combobox"), xmlHttp.responseText);

Und schon ist dieses Problem Geschichte :)

Weitere Informationen gibt es unter:
http://support.microsoft.com/kb/276228/de

Probleme mit dem visuellen Editor von WordPress

Der visuelle Editor von WordPress hat eine ganz interessante Eigenschaft bei manchen Themes. Sobald man im visuellen Editor etwas schreibt und dann ein Bild einfügt und danach einen Text schreibt so taucht dieser rechts neben dem Bild auf, anstatt unter dem Bild.

Die Lösung ist es eine editor-style.css welche in das Themeverzeichnis gepackt wird. In dieser sollte dann folgendes stehen:

html .mceContentBody {
 max-width: 640px;
}

Damit wird die maximale Breite im Editor beschränkt was diesen Effekten vorbeugt. Nun muss die CSS Datei noch in der functions.php registriert werden. Das ganze sieht dann so aus:

//Init
add_action( 'after_setup_theme', 'ocean_setup' );

//Setup
function ocean_setup() {
 add_editor_style();
}

Damit ist das Problem dann gelöst :)

Probleme mit CyanogenMod 7.0 und Google Mail

CyanogenMod 7 (basierend auf Gingerbread 2.3.3) ist ja vor einigen Tagen erschienen. Die Google Apps werden dabei automatisch aus dem Market installiert. Das Problem ist das Google Mail aus dem deutschen Market heraus nicht erreichbar ist. Hier hilft die App Market Enabler mit der man seine SIM ID auf einen US Provider stellt und anschließend Google Mail installieren kann. Problem gelöst :)

Weitere Informationen gibt es unter:
http://www.cyanogenmod.com/

MonoDevelop und die Versionskontrolle

Ich entwickle seit einer Weile auch mit MonoDevelop und wünschte mir eine integrierte Versionskontrolle für meine Projekte. Also schaute ich mal im Netz nach und siehe, da das ganze ist bereits eingebaut. Allerdings funktionierte es unter Kubuntu 10.10 nicht. Ich fand die betreffenden Menüpunkte nicht. Des Rätsels Lösung war das mir ein Paket fehlte. Nach der Installation des Paketes monodevelop-versioncontrol lief das ganze dann. Daneben habe ich auch gleich noch das Paket monodevelop-debugger-mdb installiert.

Weitere Informationen gibt es unter:
http://monodevelop.com/
http://de.wikipedia.org/wiki/MonoDevelop

Flash und Probleme mit dem Firefox 4 unter Kubuntu 10.10

Nach der Installation des Firefox 4 mittels eines PPAs unter Kubuntu 10.10 hatte ich das Problem das der Flashplayer nicht mehr so wollte wie ich das gerne hätte. Nach einigen Tests die nicht den gewünschten Erfolg mit sich brachten wählte ich die einfache Methode. Dazu installiert man sich einfach das AddOn Flash-Aid welches unter https://addons.mozilla.org/en-US/firefox/addon/flash-aid/ zu finden ist. Dieses platziert im Firefox einen Button auf den man anschließend klickt und dann dort auf den Execute Button. Das Plugin erzeugt ein Shellskript (welches man vorher einsehen kann) und entfernt dabei nicht funktionierende Versionen von Flash und installiert die passende Flashversion für das entsprechende System. Und schon funktioniert wieder alles :)