Im utilisant Mootools pour quelques choses comme des bumpboxes et d'autres choses dans une application Google Maps. Tout fonctionnait à 100%, avant ajouté le script Mootools, il n'a pas d'importance si j'ajoute le script avant ou après que je déclare mes globals, Mootools les tue ... jetez un oeil à un extraitMootools détruit mes globals !!! Google Maps + Mootools
<script language="javascript" type="text/javascript" src="mootools.js"></script>
<script language="javascript" type="text/javascript" src="bumpbox.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript">
</script>
<script type="text/javascript">
var currentBounds;
var currentMarker = null;
var currentInfo = null;
var markersArrayProps = [];
var markersArrayAreas = [];
</script>
Il y a beaucoup plus ... mais cela montre juste ce qui se passe, tout fonctionne bien si je supprime la ligne appelant mootools.js
. Fondamentalement markersArrayProps
est peuplé comme celui-ci au cours d'une XMLHTTPRequest:
markersArrayAreas.push(marker);
Ensuite, il y a un écouteur d'événement pour la carte étant idle
qui fait quelques calculs pour voir si elle doit déposer les marqueurs de la région, et des marqueurs de propriété de charge en fonction des limites de la carte. Pas besoin d'entrer dans les détails, mais chaque fois que cette fonction idle
est appelée, et la boucle I dans le tableau comme ceci:
function clearAreaOverlays() {
if (markersArrayAreas) {
for (i in markersArrayAreas) {
markersArrayAreas[i].setMap(null);
}
}
}
Il retourne markersArrayAreas[i].setMap()
n'est pas une fonction. Seulement avec le script mootools inclus dans la page, si je supprime mootools, tout fonctionne. Des idées?
Chaque fonction utilise MooTools forEach, qui itère dans le tableau exactement de la même manière que je l'ai proposé ci-dessus. –
Ah, sauf qu'il vérifie que la valeur n'est pas indéfinie pour chaque index. Le problème est donc qu'une nouvelle fonction de MooTools modifiait votre tableau de telle sorte qu'un élément devenait indéfini. En général, vous devriez toujours vérifier l'existence d'un objet après l'avoir recherché, avant d'essayer d'appeler une fonction ou d'en accéder à une propriété. –