Browser hängt sich beim Einbinden von Javascript auf oder stürzt ab

1 minute read

Browser hängt sich beim Einbinden von Javascript auf oder stürzt ab thumb image

Viele Probleme beim Einbinden von Javascript Bibliotheken oder Frameworks (z.B. mootools, dojo,..) rühren aus einer starken Komprimierung, welche das Script zugleich „verschleiert“ (obfuscate).

Das Script wird dann beim Aufruf in einigen Fällen (z.B. Dean Edwards Packer) mit einer eval() Funktion wieder aufbereitet (quasi entpackt) und für den Browser nutzbar gemacht. Diese starke Form der Komprimierung unter Zuhilfenahme von eval() zum Entpacken führt ab und zu zum Absturz des Browsers (sowohl IE 6 / IE 7 als auch Firefox und weitere) bzw. das Script läuft sich fest. Um das zu verhindern sollte man auf eine andere Kompressionsmethode zurückgreifen.

Meine Empfehlungen:

  • eine etwas geringere Komprimierungsstufe (welche kein eval benutzt) wählen, z.B. jsMin
    • + kann on-the-fly komprimiert werden, da relativ schnell
    • + keine Browserabstürze da ohne eval
    • + Implementierung in diversen Programmiersprachen verfügbar
    • - keine Optimale Komprimierung, da nur Leerzeichen, Kommentare und Zeilenumbrüche entfernt werden
    • - das Javascript bleibt danach immer noch lesbar
  • der neue YUI-Kompressor aus dem Hause Yahoo
    • + ein Mix aus überflüssigen Zeichen entfernen und Verschleierung (obfuscation) sorgt für sehr hohe Kompressionsraten
    • + die Scripte sind nicht mehr lesbar und somit besser geschützt
    • + keine Browserabstürze da ohne eval
    • + auf jedem System einsetzbar – basiert auf Java Technologie
    • - nicht on-the-fly nutzbar, weil es langsamer ist als z.B. jsmin oder dojo compressor

Letztere Variante ist mir sehr sympathisch und ich werde den Kompressor die Tage mal testen. Die Sourcen hab ich schon gezogen :)

Comments

Leave a comment — Edit this page on github and issue a PR for your comment please. HowTo?