2012-11-14 4 views
1

je suis en train d'écrire un code en javascript et j'ai besoin de travailler sur la plupart des navigateurs, mais il ne fonctionne que dans googlechrome, IE et FF n'appelez pas cette fonction:Javascript Incompatibilité avec IE et FF (fonction d'appel)

<script type="text/javascript"> 
    showLocation(<?php print "\"$citta2\""?>,<?php print "\"$row[nome] $row[cognome]\""?>,<?php print "\"$row[id]\""?>); return false; 
    </script> 

(je sais que ça l'appelle parce que la 1ère chose à faire est de faire un allert) est-ce que tu connais une raison pour que ça marche seulement en chrome? Si vous avez besoin de tous les fichiers je peux poster ci-dessous mais c'est un peu long, aussi je suis sûr que le problème est dans cet appel.

edit1: voici le code showLocation:

function showLocation(address2,nomi0,id0) { 
      alert("1"); 
    var nomi1 = nomi0; 
    var id1 = id0; 
    geocoder.getLocations(address1, function (response) { 

     if (!response || response.Status.code != 200) 
     { 
      alert("Errore con il primo indirizzo"); 
     } 
     else 
     { 
      location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address}; 
      geocoder.getLocations(address2, function (response) 
      { 
       if (!response || response.Status.code != 200) 
       { 
        alert("Errore con il secondo indirizzo"); 
       } 
       else 
       { 
        location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address}; 
        calculateDistance(nomi1,id1); 
       } 
      }); 
     } 
    }); 
} 

(il utilise google maps api pour obtenir la latitude et la longitude de la ville)

+2

montrez-nous showLocation() code, probablement une erreur de syntaxe ... –

+0

Si un peu de JavaScript ne fonctionne pas, alors montrez-nous le JavaScript, pas PHP qui génère JavaScript. – Quentin

+1

... et nous montrer un test complet qui démontre le problème. Si vous "savez qu'il fait l'appel parce que la 1ère chose à faire est de faire un allert", alors incluez une version de "showLocation" qui ne fait que cela. Un [cas de test en direct] (http://jsbin.com) serait également utile. – Quentin

Répondre

-1

Pas une réponse (pour l'instant) juste besoin de plus que le 600 caractères autorisés dans les commentaires.

Tout d'abord, permet de faire votre balise de script un peu plus facile à lire, et ajouter un peu de débogage:

<script type="text/javascript"> 
    try { 
     if (window.showLocation) 
     { 
      showLocation(<?php print "'{$citta2}','{$row[nome]} {$row[cognome]}','{$row[id]}'"; ?>); 
     } 
     else 
     { 
      // if you see this message: 
      // then you have a syntax error before or within the creation of showLocation 
      alert("showLocation has not been created!"); 
     } 
    } 
    catch (e) { 
     alert("Error from caller: " + e); 
    } 
</script> 



Et maintenant dans votre autre code, ajouter un peu de débogage:

function showLocation(address2,nomi0,id0) { 
    try { 
     alert("1"); 
     var nomi1 = nomi0; 
     var id1 = id0; 
     geocoder.getLocations(address1, function (response) 
     { 
      try 
      { 
       if (!response || response.Status.code != 200) 
       { 
        alert("Errore con il primo indirizzo"); 
       } 
       else 
       { 
        location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address}; 
        geocoder.getLocations(address2, function (response) 
        { 
         try 
         { 
          if (!response || response.Status.code != 200) 
          { 
           alert("Errore con il secondo indirizzo"); 
          } 
          else 
          { 
           location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address}; 
           calculateDistance(nomi1,id1); 
          } 
         } 
         catch (e) 
         { 
          alert("Error in callback#2: "+ e); 
         } 
        }); 
       } 
      } 
      catch (e) 
      { 
       alert("Error in callback#1: " + e); 
      } 
     }); 
    } 
    catch (e) 
    { 
     alert("Error in functon: " + e); 
    } 
} 




_Ajouté encore plus debug alerts_

+0

en ajoutant essayer et attraper dans l'appel de la fonction, cela ne fonctionne pas en chrome aussi (la fonction doest est appelée et aucune erreur n'est signalée, en retirant l'essai et en attrapant seulement l'appel fonctionne en chrome et la fonction fonctionne correctement – user1815979

+0

J'ai eu un problème dans mon code. Essayez à nouveau :) – SReject

+0

J'ai également essayé de faire une fonction test() {alert ("test");} et l'appel à mi-chemin dans ma page avec test() et encore fonctionne seulement en chrome – user1815979

Questions connexes