habe folgendes Problem.
In meine Webseite will ich eine OSM einbauen mit beliebig vielen Marker. Klappt auch soweit. In Firefox wird alles super dargestellt, ich kann zoomen und verschieben.
Im IE (Version 11) jedoch wird nichts angezeigt. Es gibt ein Script-Problem.
Nachdem ich dort in der Karte auf das “+” Zeichen gehe und “Meine Orte” ausschalte, so wird die Karte zum Teil eingeblendet, jedoch natürlich eine meine Marker und sehr fehlerhaft.
Muss eine private Homepage fürs Studium erstellen und die Einbindung der OSM ist der letzte Schritt, aber die Darstellung funktioniert im IE nicht…
Warum gibt es im IE diese Probleme und wie kann ich diese beheben?
Naja, das der IE gerne eine Sonderbehandlung möchte ist ja nichts neues. Schreib doch einfach drunter, dass wenn nichts angezeigt wird, einfach auf einen anderen guten Browser gewechselt werden soll. Ich mein, entweder man hat sauberen Code oder nicht. Da irgendwelche Ausnahmen für den IE zu schreiben…naja, wer es sich nicht leisten kann auf solche Besucher zu verzichten. Aber so wird MS halt nicht gerade unter Druck gesetzt…
Sorry für Off-Topic.
Schonmal vielen vielen Dank für deine Hilfe und Mühe!
Dein Link funktioniert sowohl im IE als auch GoogleChrome, hammer!
Ich werde morgen meine Seite umbauen und dann testen.
Was genau war bei meinem ursprünglichen Code fehlerhaft bzw. wie bist du auf einen richtigen Lösungsweg gekommen?
Gruß Sebastian
edit//
Den Javascript Teil kann ich doch in eine extra js Datei legen oder? und dann im HTML Bereich auf diese js Datei verweisen.
Wäre programmiertechnisch sauberer oder?
edit2//
nochmal ne Frage:
Ist es auch möglich in das Information-PopUp einen “Schließ-Button” zu integrieren, so dass ein geöffnetes PopUp nicht durch erneutes Klicken auf den Marker verschwindet sondern über den “Schließ-Button”?
bzw auch verschwindet sobald man irgendwo in die Karte klickt, also nicht speziell nochmals auf den Marker drücken muss?
Dem wohlfeilen MS/IE-Bashing zum Trotz: die aktuellen Versionen des IE halten die Spezifikationen von HTML, JS und CSV genauer ein als z.B. der FF. Wenn eine Seite mit IE nicht funktioniert, hat man (meist) irgendwo geschlampt und gegen Spezifikationen verstoßen. Das wirklich blöde am IE ist, dass er nur unter Win läuft und ich keins habe (musste mir zum Test eben nen Laptop ausleihen mit Win drauf). Wäre dem nicht so, würde ich zuerst mit IE testen. Was da läuft, läuft mit hoher Wahrscheinlichkeit auch mit FF&Co.
Empfehlung: während der Änderungen immer die letzte funktionierende Version sichern.
Der Teufel steckt im Detail. Da ich nur die Schnipsel, aber keine vollständige Seite hatte, habe ich nicht nach dem Fehler gesucht; stattdessen meine Beispielseite kopiert und ein wenig angepasst.
Ich empfehle, bei Problemen mit Seiten und/oder JavaScript die Seite im Netz zugänglich zu machen: für statische Dateien reicht ein für-lau-Hoster. Dann muss man nicht blind herumstochern, und das erhöht die Motivation zu helfen.
Geschmackssache.
Ich packe (mehrfach verwendbare) Definitionen neuer JS-Klassen in eigene Dateien, das zu einer einzelnen Seite gehörende JS jedoch in die Seite selbst. Da gehört es aber in den -Bereich und nicht wild irgendwo in den eingestreut.
Hast Du da zu HTML irgendein Beispiel? Meiner Erinnerung nach gab es da vor 10 Jahren schon keine signifikanten Unterschiede mehr.
Was macht denn aktuell der FF im HTML-rendering (abgesehen von DTD nachladen, was (afaik) kein Browser macht) falsch?
Das halte ich für eine Gerücht. In AJAX-Beispielen finden sich typischerweise Fallunterscheidungen der art “if IE nehme abweichende Objektnamen else alle anderen Browser einheitlich”. Meine Erfahrungen decken sich damit, meine Seite z.B. ist mit FF getestet, läuft aber auch in Chrome, Safari etc. Nur IE stellt sich quer und würde oben genannte Fallunterscheidungen erfordern.
In einem konkreten Fall hatte ich z.B. bei der div für eine Karte das Problem, daß die width aus style-Angaben für left und right dynamisch berechnet werden muß. IE zeigt die Seite zwar korrekt an, teilt aber sein Berechnungsergebnis nicht mit sondern läßt width auf null stehen, so daß später eine Exception in OpenLayers fliegt. Braucht wieder eine Fallunterscheidung um die Berechnung nochmal im Skript zu machen und den Wert künstlich zu setzen.
In dem Fall mußte ich den IE-Workaround einbauen, aber normalerweise tu ich mir das nicht an und empfehle einen vernünftigen Browser.
Sobald ich aber die html lokal aus der zip-Datei verwende und im Browser testen will, taucht das gleiche Problem wieder auf.
Es wird wieder keine Karte angezeigt (im IE ), bzw die Marker werden nicht dargestellt (im Chrome).
Dasselbe auch bei meiner html Datei, in die ich deinen Code geschrieben habe.
Sobald in den URLs “file:///” auftaucht, ist der Mechanismus besonders vorsichtig und blockiert je nach Implementierung und Sicherheits-Einstellungen fast alles. Das kann man als Feature sehen oder auch als Bug.
Ich sehe zwei Lösungen:
Du rufst die Seiten von einem Server ab. Gibts für ganz kleines Geld oder auch für lau. Dann funktioniert das Nachladen der *.txt-Datei. Das ist die saubere Lösung.
ich habs jetzt ganz anders gemacht bzw ähnlich deiner 2. Lösung, da ich das ganze dem Prof. als zip-Datei abgeben soll. (Abruf vom Server fällt somit flach)
Hab den script-Teil in eine JS-Datei eingefügt und verweise im HTML-head-Bereich auf die JS-Datei.
Dieser JS-Datei hab ich an den Anfang “window.onload = function () {” gesetzt.
Nun hab ich dann jeweils mit “var feature = new OpenLayers.Feature.Vector(” meine Orte und Marker gesetzt.
Scheint bisher zumindest mit allen 3 Browsern zu funktionieren.
Ist diese Lösung auch in Ordnung oder gibts da was einzuwenden?!
Dannn bedanke ich mich vielmals für die super Hilfe!
Ohne die wäre ich sicher nicht durch Herumsuchen und Herumprobieren auf einen Lösungsweg gekommen.
Fall ich nochmal Fragen hab weiß ich ja, dass ich hier super Hilfe bekomme.