Das deviceReady-Event von PhoneGap unter Windows Phone 7

Ohne DeviceReady sind die PhoneGap-APIs nicht ansprechbar; auĂźerdem versagen native Plug-ins den Dienst. Nun ist auch Windows Phone 7 betroffen

vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Tam Hanna

Das DeviceReady-Event des PhoneGap-Frameworks ist seit jeher ein Problemfall – Nutzer von Bada können ein Lied darüber singen, dass das Event nach einem Update des Frameworks immer wieder mal nicht "abgefeuert" wird. Nun ist auch Windows Phone 7 betroffen.

Wer das Projektskelett nach dem Deployment nicht auf den "grünen Zustand" (deviceReady) wechselt, muss sich mit dem Problem befassen: Ohne DeviceReady sind die PhoneGap-APIs nicht ansprechbar; außerdem versagen native Plug-ins den Dienst. PhoneGap wird damit zu einer reinen Verpackungslösung für Webapps.

Die Lösung des Problems findet sich in der folgenden Passage, die sich normalerweise in der Datei index.html befindet:

<script type="text/javascript" src="phonegap.js"></script>

Apache hat die Kerndatei des Frameworks vor einigen Wochen umbenannt. Der Name PhoneGap liegt bei Adobe, das quelloffene Projekt heißt ja seit einiger Zeit Cordova. Um Namenskonflikte zu verhindern, wurde auch der Dateiname der Bibliothek geändert – das wurde dem CLR-Wartungsteam aber nicht mitgeteilt.

Zur Laufzeit ist die Applikation aus diesem Grund nicht in der Lage, die Datei zu finden. Die Behebung erfolgt durch das Anpassen der Inklusion:

<script type="text/javascript" src="cordova.js"></script>

Dabei ist es vorteilhaft, das Projekt aus der CLR zu entnehmen und in Visual Studio zu importieren – die meisten anderen Projektskelette funktionieren nämlich wie vorgesehen. Durch das "Isolieren" in der nativen IDE können Entwickler die Codebasen voneinander unabhängig verwalten – der Code lässt sich durch eine Batch-Datei synchronisieren. Alternativ lassen sich auch zwei Includes einbauen oder die Bibliotheksdatei im Windows-Phone-7-Projekt umbenennen.

Auf meinem Windows Phone 7 (Samsung Omnia 7, Windows Phone 7.8) funktioniert das generierte Projektskelett nach dieser Änderung problemlos ... ()