AS3 での window.open 関数
[ AS3.0, javascript ] 2009年3月 1日 23:21
かなりはまってしまったのでメモ。
Flash の中からポップアップウインドウをどうしても開きたくて、ExternalInterface.call(); を使用して js の定義済関数や window.open を直接呼びだしてポップアップウインドウを開いてたんだけど、どうしても Safari だけは window.open 自体が殺されてしまっていた。
AS2 単独で getURL に直接 window.open(url); とかだと問題ないんだけど、AS3 になると全く駄目で、AS3 の swf に AS2 の swf を読みこんで LocalConnection で接続して getURL を呼び出しても駄目でした。
これって AVM2 で実行してると、クリックが Safari 側でとれてなくて、window.open を殺してしまってるんだろうか・・・・。
しょうがないので、Safari だけは navigateToURL("hoge.html", "_blank"); みたいにして、_blank で開いて、 js でリサイズすることにした。
まぁ、今後は設計の段階で Flash からポップアップは基本なしにしたほうがよさそうだ。
ってかこれは、AVM2 のバグなのか、Safari のバグなのか仕様なのかはっきりしてもらいたいところ。



このエントリを拝見して、まったく同じ問題でハマったのを思い出しました。その時はどうしようもなくなり、クライアントに相談して"_blank"に逃げてしまいました。検証した感じだと、Safari側の問題っぽいですよねぇ……。
ですねー。でも今後はこういう問題があるので、デザイン段階で注意をすれば事前に防げると思うので、まぁ大丈夫かなーと思ってます。