Comment le feu deviceready dans le navigateur google Chrome (essayez de déboguer phonegap projet)
Je suis le développement d'une application PhoneGap et je voudrais être en mesure de débogage dans le navigateur Chrome plutôt que sur le téléphone. Cependant, je ne l'initialisation de mon code dans un onDeviceReady() fonction qui est déclenchée lorsque PhoneGap les feux de l' "deviceready" de l'événement. Étant donné que Chrome n'est pas le feu à cet événement, mon code n'est pas initialisé.
Voici une version allégée de mon code:
var dashboard = {};
$(document).ready(function() {
document.addEventListener("deviceready", dashboard.onDeviceReady, false);
});
dashboard.onDeviceReady = function() {
alert("hello!"); //this is never fired in Chrome
};
J'ai essayé d'utiliser le Pis-aller code, qui, fondamentalement, tout simplement la suivante:
var e = document.createEvent('Events');
e.initEvent("deviceready");
document.dispatchEvent(e);
Mais lorsque j'exécute ce code dans la console javascript de Chrome, le "bonjour" alerte ne se déclenche pas. Ce que je fais mal? Ou google chrome, il ne supporte pas la cuisson "sur mesure" des événements comme deviceready?
Vous devez vous connecter pour publier un commentaire.
Ajouter ce code à votre gestionnaire onLoad de la fonction:
Événement "deviceready" est déclenché dans cordova.js je ne sais donc pas un moyen pour détecter l'existence de cet événement dans le code de l'application.
Fini par sortir le pis-aller de code et d'avoir à introduire un petit retard (ont ce code s'exécutant dans un script séparé de la page-code spécifique):
Utilisation de l'Ondulation Émulateur Mobile. Il est disponible gratuitement sur le Chrome Web Store. Lorsqu'il est installé, accédez à la page que vous souhaitez le tester, cliquez-droit sur la page et choisissez Ondulation Émulateur Mobile > Activer. Lorsque vous y êtes invité, choisissez PhoneGap.
L'émulateur est bon, mais il est encore en version bêta, donc tout n'a pas été encore mis en œuvre.
Ad@m
about:flags
et permettre l'accès à la file:// urls, puis redémarrez google Chrome. Si vous ne pouvez pas le voir dans la liste, faites une copie de votre Chrome raccourci sur votre bureau et ajouter--allow-access-file-urls
de la zone de texte cible. Ad@mvar loadEvent="ondeviceready" in document?"deviceready":"load";
Puis remplacer"deviceready"
sur votredocument.addEventListener
ligne avecloadEvent
. Ad@mJ'utilise Safari pour le débogage et le faire:
Pour mon site mobile et l'Application mobile, je suis en utilisant le code suivant avec jQuery:
user318696 avait de la magie que je cherchais. "périphérique" est défini dans cordova et n'est pas définie lorsque dans un navigateur (non-application phoneGap wrapper).
ÉDITÉ:
J'ai couru dans un scénario où Cordova a fallu un certain temps pour initialiser sur un appareil et de "l'original" réponse ici, n'était plus valable. Je me suis déplacé nécessitant un paramètre dans l'URL lors de l'exécution de tests dans le navigateur. (dans l'exemple, je suis à la recherche de "test=" dans l'url de la page d'origine)
ORIGINAL:
Je n'ai pas creusé assez profondément pour savoir combien de temps à faire confiance à ce [pourraient-ils la définition de "dispositif" dans le navigateur dans une version future?] Mais au moins jusqu'à la version 2.6.0 c'est sûr:
user318696 de la fenêtre.appareil de détection fonctionne bien. Si à l'aide de Kendo UI Mobile et PhoneGap, le script suivant va activer des fonctionnalités à la fois PhoneGap construit et navigateurs web. Ceci est basé sur Burke Hollande PhoneGap Build Bootstrap Projet de Kendo UI Mobile et est destinée à être placée au bas de la page avant la balise de fermeture body.
L'amélioration de Chemik suggestion. Le code suivant utilise le navigateur.userAgent de la chaîne par le terme générique de déterminer si le navigateur du client est sur une plate-forme mobile.
Le but de la séparation d'avec les navigateurs de bureau est de permettre code de vérification préalable à la compilation/installation android apk, etc. Il est beaucoup plus rapide de faire un rapide changement de code, de rafraîchissement du navigateur de bureau vs compilation dans eclipse et le chargement sur android. Un autre avantage est la possibilité d'utiliser weinre dans un onglet, & le index.html à partir d'android actifs dans un autre onglet (et l'utilisation de firebug).
PS: weinre code est exclue, car il a mon privé VPS info & UUID.
thx!
Vous simuler des événements comme celui-ci:
JS:
HTML: