8
votes

JavaScript "erreur non spécifiée" en couches ouvertes

Je reçois cette erreur Texte alt http://img239.imageshack.us/img239/6936/jserror. PNG lorsque la carte est chargée.

L'erreur est dans le fichier OpenLayers original, non modifié.js sur cette ligne:

retour !! (document.names espaces);

J'ai essayé de la réécrire à:

retour (typeof (document.names espaces)! = 'non défini');

et cela a fonctionné, mais j'ai alors les mêmes erreurs "non spécifiées" sur des références supplémentaires au document.NamesPaces:

si (! document.namespaces.olv) {document.namespaces.add ("OLV", ceci.xmlns); ...

J'ai essayé de réécrire cela à:

si (typeof (document.namespaces.olv) == 'non défini') {...

mais je reçois la même erreur "non spécifiée".

Je reçois seulement cette erreur sur Internet Explorer (j'ai testé sur 7) et non dans Firefox.

Tous les indices?

Merci.


0 commentaires

3 Réponses :


6
votes

J'ai trouvé la solution.

Le problème était que je créais la carte lorsque le DOM était prêt avec jQuery: p> xxx pré>

Tout ce que vous avez à faire est Pour créer la carte après l'événement ONLOAD: P>

window.onload = function() { ... // create map here [CORRECT]


2 commentaires

Écraser tous les événements .Onload avec le vôtre n'est guère une bonne chose à faire


Nous avions des problèmes dans Firefox avec Windows.Onload, donc opté à la place pour $ (fenêtre) .bind ("charger", fonction () {



0
votes

Le problème avec Internet Explorer est que lorsque la page frappe le document prêt ou la fenêtre Onload, ce navigateur M $ ne peut pas encore déterminer les dimensions du canevas de la carte. Si vous souhaitez contourner cela, vous pouvez également envisager de définir votre carte DIV DIMENSIONS:

<div id="map" style="width:250px;height:250px"></div>


1 commentaires

Merci, tu as sauvé mes fesses! Je n'ai besoin que de définir explicitement une hauteur et non de largeur, ymmv.



7
votes

Le problème réel est que le document.Names espaces n'est pas prêt dans IE8 parfois lorsqu'il déclenche $ (document) .Ready (à cause de VML)

Vous pouvez utiliser à la place: P>

jQuery(window).load(function() {} ...);


0 commentaires