Wenn man bei Firefox ab Version 3.6.4 unter Windows per ExternalInterface.call() eine Javascript Alert Box aufruft, kann es passieren, dass der gesamte Tab einfriert und das Flash Plugin abstürzt. Die Lösung ist zwar einfach, liegt jedoch nicht unbedingt auf der Hand.
Mozilla Firefox hat ab Version 3.6.4 das Konzept der Plugin Container eingeführt. Dadurch soll das Abstürzen des Browsers bei Fehler in Browser Plugins wie Adobe Flash, Microsoft Silverlight oder Apple Quicktime verhindert werden. Durch dieses Konzept kommt es unter Windows aber anscheinend zu Problemen, wenn man Flash über das ExternalInterface eine Alert Box öffnet. In den meisten Fällen friert der Browser ein und es hilft oftmals nur das manuelle beenden des Prozesses “plugin-container.exe”.
Um diesen Problem vorzubeugen hilft es, die Alert Box nicht wie üblich einfach über die Funktion “alert()” aufzurufen, sondern das ganze über die Javascript timeout Funktion aufzurufen. Ein Aufruf würde dann so aussehen:
setTimeout("alert('Alert message with timeout of 1 ms')", 1);
Dadurch wird die Alert Box nicht sofort sondern erst nach einem kurzen Timeout aufgerufen, was das Problem behebt. Der Bug existiert bereits in der Mozilla Bugbase und man kann nur auf ein baldiges beheben hoffen.
Der Sourcecode mit einem einfachen Beispiel findet ihr hier: FirefoxJSBug
Labels: Development / Technologie
Du kannst einen Kommentar schreiben, die Kommentare per RSS 2.0 Feed verfolgen oder einen Trackback von deinem Blog aus setzen.






Hey,
danke für die Info!
Hat mir super weiter geholfen. Ich hab die AlertBox zum debuggen genutzt – schade das hierbei das eigentliche Problem aufgetreten ist, sehr strange…