2010-06-10 6 views
1

Ce code js fonctionne en safari sur mon pc, mais pas sur un ipod touch safari (a également testé sur un iphone - ne fonctionne toujours pas).iPhone Safari Vs PC Safari

$(document).ready(function(){ 

       $.ajax({ 
       type: "GET", 
       url: "list.xml", 
       dataType: "xml", 
       cache: false, 
       success: function(xml) 
       {    
        $(xml).find('Lights>Light').each(function(){       
         var lightname = $(this).attr('Name');      
         $('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems'); 
        }); 
       } 
      }); 

     }); 


     function lightdata() 
     { 
      alert("entered lightdata");    
     } 

Le code analyse xml et crée de manière dynamique du code HTML. Mon alerte ne s'affiche pas sur l'iPod touch - les autres alertes de test s'affichent très bien. Donc, l'appel de la fonction à lightdata ne doit pas se produire pour une raison inconnue (hense cette question; o)) quand je cours cela sur l'iPod touch. Quelles sont les possibilités de débogage dans Safari sur un appareil de poche? Je cherche quelque chose comme firebug - juste pour le safari iphones à la place pour firefox. La console de débogage dans le safari mobile ne montre aucune erreur. Des conseils/conseils seraient appréciés.

Répondre

2

Depuis que je n'ai pas votre XML pour tester, je vais sur une branche et dire le problème est les caractères supplémentaires \')" vous avez dans votre code HTML:

Modifier cette ligne:

$('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems'); 

à ceci:

$('<li><a href="#lightssubmenu" onclick="lightdata()">'+lightname+'</a></li>').appendTo('#lightitems'); 

De plus, vous devez changer la façon dont vous gérez les événements et joindre à l'extérieur du gestionnaire en ligne onclick. Voici votre code, déplacé autour d'un peu:

$(document).ready(function(){ 
    var lightItems = $('#lightitems'); 

    lightItems.delegate('a','click', function(e){ 
     e.preventDefault(); 
     lightdata(); 
    }) 

    $.ajax({ 
     type: "GET", 
     url: "list.xml", 
     dataType: "xml", 
     cache: false, 
     success: function(xml) {    
      $(xml).find('Lights>Light').each(function(){       
       var lightname = $(this).attr('Name');      
       lightItems.append('<li><a href="#lightssubmenu">'+lightname+'</a></li>'); 
      }); 
     } 
    }); 
}); 


function lightdata() 
{ 
    alert("entered lightdata");    
} 

Note: cela nécessite jQuery 1.4.2+

Questions connexes