PhoneGap in Version 1.0 erschienen

Bei der mobilen Anwendungsentwicklung steht man vor dem Problem das man für jedes System meist eine andere Sprache sowie andere Klassenbibliotheken benutzen muss. In diese Lücke springt PhoneGap, welches vor kurzem in der Version 1.0 erschienen ist. Dabei handelt es sich um ein quelloffendes Framework mit welchem Anwendungen in JavaScript, HTML und CSS geschrieben werden können welche dann mit dem nativen Elementen der jeweiligen Plattform auf dem Gerät laufen.

Dabei ist es mit PhoneGap möglich Anwendungen für Android, iOS, webOS, Microsoft Windows Mobile, Nokia Symbian OS und RIM BlackBerry zu schreiben. Bezogen werden kann das Framework dabei unter http://www.phonegap.com/.

Weitere Informationen gibt es unter:
http://en.wikipedia.org/wiki/PhoneGap
http://www.pro-linux.de/news/1/17341/phonegap-10-veroeffentlicht.html

HTML Tabelle in CSV

Manchmal ist es ganz praktisch wenn man aus einer HTML Tabelle eine CSV erstellen kann. Dazu gibt es unter http://www.codekeep.net/snippets/ec9f4704-b88a-486a-98f9-896de6afb021.aspx auch ein schönes Beispiel. Das Problem an diesem Beispiel ist das es nicht funktioniert. Einige Elemente sehen nach jQuery aus, so das man es ohne diese Bibliothek nicht benutzen kann. Mit „normalem“ Javaskript sieht das ganze dann so aus:

function tableRowsToCSV(theRows) 
{
 // Converts table rows into a csv stream
 var csv = "";
 for (var r=0;r<theRows.length;r++) {
 var csvRow = "";

 var theCells = theRows.item(r).cells;
 for (var c=0;c<theCells.length;c++) {
 var cellData="";
 cellData = theCells.item(c).textContent;
 //alert(cellData);
 if (cellData.indexOf(",") != -1) { 
 cellData = "'"+cellData+"'"; 
 }
 csvRow += ","+cellData;
 }
 if (csvRow != "") { 
 csvRow = csvRow.substring(1,csvRow.length); 
 }
 csv += csvRow+"\n";
 }
 return csv;
}

Der Aufruf der Funktion könnte dann zum Beispiel so aussehen:

var csvText = tableRowsToCSV(document.getElementsByTagName("tr"));

Diesen Text kann man dann in Javaskript weiterverwenden oder ihn z.B. an ein PHP Skript (per POST) schicken, welches das ganze dann zum Download anbietet.

Die Internet Explorer Hölle

Man nehme ein hübsches HTML Formular:

<form>Vorname:
<input maxlength="30" name="vorname" size="30" type="text" />

Nachname:
<input maxlength="30" name="nachname" size="30" type="text" />

</form>

In fast allen Browser sieht das prima aus, nur der Internet Explorer ist der Meinung nach dem Formular einen Zeilenumbruch einzufügen, was in einigen Konstellationen doch recht seltsam aussieht. Glücklicherweise kann man das ganze leicht per CSS verhindern. Dazu müssen wir dem Form Tag die Eigenschaft display:inline zuweisen. Das ganze sieht dann so aus:

<form style="display: inline;">Vorname:
<input maxlength="30" name="vorname" size="30" type="text" />&nbsp;

Nachname:
<input maxlength="30" name="nachname" size="30" type="text" />

</form>