2009-11-02 6 views
1

Je construis une application web mobile qui dépend ou non d'ajax, selon que le navigateur de l'utilisateur supporte javascript. Comme j'utilise JQuery, je veux m'assurer que le navigateur mobile supporte AJAX via JQuery avant d'activer ma fonctionnalité AJAX.Test pour AJAX dans les navigateurs mobiles

Je rencontre un problème avec Opera Mini en raison de la façon dont il rend les pages, et je ne suis pas sûr de savoir comment le vérifier. Voici le code que je utilise pour tester AJAX:

$(document).ready(function() { 
    $.get(
     'test.txt', 
     function() { 
      init_ajax(); 
     } 
    ); 
}); 

Où init_ajax() permet ma fonctionnalité ajax et désactive ma fonctionnalité statique. Le problème est que Opera Mini exécute ce code avec succès avant de sortir la page vers le navigateur, mais ajax ne fonctionne pas réellement sur la page rendue. J'ai essayé d'exécuter cette fonction dans setTimeout au lieu de document.ready, mais j'ai rencontré le même problème.

Existe-t-il un moyen universel de tester avec précision la présence d'AJAX dans les navigateurs mobiles?

P.S. Si vous voulez tester votre solution dans Opera Mini, il y a un émulateur entièrement fonctionnel ici:

http://www.opera.com/mini/demo/

[Modifier] Je dois préciser que cette application a besoin de faire un appel ajax environ une fois par minute en utilisant setInterval, donc Même si Opera Mini supporte un ajax quand il est déclenché par un onclick, je ne crois pas qu'il existe un moyen de le faire supporter les appels ajax effectués à un certain intervalle. Si nous pouvions tester cela, cela résoudrait probablement le problème ci-dessus.

+0

Vous ne demandez pas vraiment si les navigateurs mobiles supportent ajax ici, mais plutôt si les navigateurs mobiles supportent ajax via jquery. Grande différence. –

Répondre

0

Opera Mini ne récupère-t-il pas les requêtes Web sur les serveurs d'Operas et restitue les pages (sous forme d'images et de texte) à la cible avec des fonctionnalités réduites? Avec le rendu sur la batterie d'Opera Mini Server, il n'y a pas de réelle communication entre le client et le serveur Web, vous ne pouvez pas faire d'ajax.

Vous avez probablement besoin d'une autre méthode pour effectuer la vérification pour Opera Mini, en regardant l'agent utilisateur pour "Opera Mini/1.2" serait idéal. Quant à effectuer une vérification pour les navigateurs mobiles, bien, cela dépend de l'étendue de la fonctionnalité fournie par le navigateur mobile. Parfois, vous ne pouvez pas vérifier et devrez retirer des navigateurs mobiles particuliers par leur nom.

Plus d'infos ici Designing With Opera Mini in Mind.

+0

Je pense que vous avez raison. Autant que je sache, Opera Mini exécute des scripts pendant environ 2 secondes, puis s'arrête et livre la page. Ainsi, pendant environ 2 secondes, la page est entièrement fonctionnelle, ce qui signifie que tout test effectué au cours de cette période donnera des résultats incorrects. – Travis

+0

Le mini-serveur d'opéra exécute les scripts et exécute la requête, puis la délivre au client mobile. Donc vraiment dans ce cas, la seule option est de l'identifier directement par l'agent utilisateur et de désactiver la fonctionnalité ajax. – skirmish

Questions connexes