* Hinweis - Dieser Code stammt von einer Drittanbietererweiterung. Ich hatte keinen Teil davon und vor einigen Jahren war es die einzige Erweiterung, die zu dieser Zeit verfügbar war. So, während ich Ihre Meinungen schätze, hoffe ich, dass alle Kommentare nur für Vorschläge auf einer Entschlossenheit sein können. Vielen Dank!Uncaught SyntaxError: Unerwartetes Token)
Wir haben viele Websites, die eine Google Maps-Komponente für ein CMS ausführen, mit der Kunden Markierungen und Umrisse (Polygone) zu ihren Google Maps hinzufügen können.
Dies funktioniert seit Jahren. Zu beachten ist, dass Google Maps JS API 2 verwendet wird, das nicht API 3, sondern Google eingestellt wurde. Allerdings hat Google festgestellt, dass API 2 auch 2013 noch gut funktionieren wird. Das ist nicht das Problem. Allerdings müssen sie etwas geändert haben, denn auf den anderen Seiten erscheinen die Karten und Polygone auf allen unseren Seiten. Sie sind auf verschiedenen Servern.
Bevor es keine Fehler war, aber jetzt in Chrome heißt es:
"Uncaught Syntaxerror: unerwartetes Token)" für die Linie 1669 in einer JS-Datei. Sie können die Datei im folgenden Gist sehen:
https://gist.github.com/2238148
Wie Sie sehen nicht es fehlt „)“ und der Code ist seit Jahren auf fast 100 Standorten unmodifizierten arbeiten, also davon ausgehen, etwas auf Googles Ende Muss habe sich geändert. Aber können wir uns an diesen Code anpassen, um dem Wandel entgegenzuwirken? -Update am 25. März, wenn alle diese brach Google ein Update für ihre Google Maps API 2.
das Web durchsucht gemacht und hier ist ein Beispiel-Website die gleiche Komponente mit dem gleichen Fehler mit: http://goo.gl/GMgOs
Dieses Problem erscheint in der Nähe sein:
// extract current digraph from overlay function var digraph = GMap.addOverlay.toString().replace(/\s/g,'').replace(/.push\([^{]+\);a.initialize\([^{]+\);a.redraw\([^{]+\).+$/,'').replace(/^.+\./,''); // add multiple overlays at once (api hack to improve loading speed) GMap2.prototype.addOverlays = function(a) { var b = eval('this.' + digraph); var i = a.length; while (i--) { b.push(a[i]); a[i].initialize(this); a[i].redraw(true); } }
Wenn dieser Code die geänderte Version auf einem Kern oder pastie jemand veröffentlichen werden muss alterted könnte?
Ein weiteres Update - Dieser Code in der oben genannten ich auskommentiert, da es nicht benötigt wird, war ein Hack, um die Dinge zu beschleunigen. Immer noch ein Fehler wird jedoch in den Kommentaren vermerkt. Ich habe jedoch hier bemerkt: https://developers.google.com/maps/documentation/javascript/v2/reference#GMap2.Methods.Overlays, dass es den Code "addOverlay" anstatt "addOverlays" nennt, also frage mich, ob vielleicht das s im letzten API Google Update entfernt wurde. Das Entfernen der s an allen drei Stellen schießt einfach einen neuen Fehler hervor, der [Objekt] viele Male wiederholt.
Ich würde JSLint vorschlagen, da Aptana viele Fehler zeigt, wenn die JSLint-Validierung aktiv ist. So finden Sie Ihr Problem sicher. – helly0d
@ helly0d: Der SyntaxError scheint in einem Eval zu passieren. Ich denke, JSLint kann das nicht finden, es würde nur sagen "Benutze eval nicht" :-) – Bergi
@Bergi Zunächst einmal heißt es eigentlich "eval is evil", zweiter Punkt, trotzdem solltest du JSLint es denn haben eine Menge Fehler, und nicht zuletzt versuchen, den Code für eval zu sehen und zu debuggen, wenn es Bugs hat, machen Sie entweder ein Reparatur-Tool für unerledigten JS-Code oder überzeugen Sie Google von JSLint ihren Code: p. Am Ende gibt es nichts, was Sie tun können, um einen Fehler zu melden, wenn Sie sicher sind, dass es nicht Ihr Code ist. Viel Glück. – helly0d