flash.external.ExternalInterfaceでJavaScriptを叩く際に、window.open系が入っているとブラウザによって色々と問題があるっぽい。
1)Safariだと「ポップアップをブロック」に引っかかってしまい、windowが開かれない。
2)win + Firefoxだと「新規ウインドウをタブに開く」と設定していれば問題ないが、新しいウインドウを立ち上げるとcallとFlash内のスクリプトアクションが消失する場合がある。
というような感じ。
解決策は・・・
1)についてはブラウザによってポップアップブロックの判定基準が良くわからないのでなんともいえないが、従来どおりgetURLを用いてJSにアクセスすることで回避できる。
2)はちょっとややこしくて、callと同時に発動しているFlash内のほかのアクションから少し遅らせて(オデは10ms)callすることで元のFlashが固まることを回避できる。ただこの場合SafariはNGなので、どっちにしても1)の解決策を用いるしかない。
ちなみにhashをいじったりするJSをgetURL経由で行っているとwin+IEとか制御不能になるので、window.open以外でJSにアクセスする場合はできるだけflash.external.ExternalInterfaceを用いたほうが良いかと思います。
さて今日も朝日がまぶしいです。
「flash.external.ExternalInterface」への2件の返信
おお、ためになる情報ありがとうございます。ブラウザ依存の問題は本当にしんどいですよね……。
特にSafariが・・・・汗
オデのiBookもうHDDが壊れたっぽくてMACが起動しません・・・。
(BootcampのWinは起動するのに・・・w)