Something quite intriguing is happening with Firefox 3.5.
When loading directly a local swf, Firefox creates an HTML document wrapper around it. So far, so good: you get (are supposed to get) exactly the same thing you would get from a regular web page embedding your swf.
Technically, the generated document looks like:
<html>
<head><title>ChromelessBrowser.swf (Objet application/x-shockwave-flash)</title></head>
<body marginwidth="0" marginheight="0">
<embed height="100%" width="100%" name="plugin" src="file:///Users/dmp/var/zoom/zoomorama2/trunk/build/debug/chromelessbrowser/ChromelessBrowser.swf" type="application/x-shockwave-flash"/>
</body>
</html>
Now, try something ridiculously simple, from ActionScript: inject the following javascript code snippet into the window scope:
alert(document.body.style.border);
Well, that is (for you AS nerds):
ExternalInterfaceNG.call(
<script>
<![CDATA[
function( ){ alert(document.body.style.border); }
]]>
</script>
);
Witness the abominable crash: "TypeError: Error #1083: The prefix "file" for element "file:/" is not bound."
Now, switch back to Firefox 3. All is fine.
Admittedly, I'm totally comfloused about what's happening here. I guess something has changed in the way Firefox builds the fake wrapper document, and the Adobe evil injection into javascript land (__flash_*) gets lost.
Anyone?
Update
There may as well be a security problem. Calling focus on the embed (again, from a js injection) ends-up denied:
Erreur : Permission refusée à <file://> d'appeler la méthode HTMLEmbedElement.focus de <>.
This definitely sounds like a ffox regression of some sort, although admittedly the use case is rather marginal...
Update 2
You also get denied when trying to fullscreen. Obviously, the sandbox got squeezed...