IEは、ローカルでの の使用や SWFファイルの再生などをしようとするとブラウザのウィンドウ上部に「セキュリティ保護のため、コンピュータにアクセスできるアクティブコンテンツは表示されないよう・・・」というアラートがでる。画面が真っ白のままでこのアラートはユーザー体験としてひどすぎる。

activecontents.png

最新の FLASH PLAYER(8以降?)もローカルで再生したコンテンツからインターネットにアクセスしようとすると、セキュリティの設定を求められます。

昔、objectembedタグで書かれたFlashなどが、クリックするまでは動かなくなる仕様変更があったので、ローカルでobjectタグ(embedタグ)をHTMLに直貼りしたりしていると

  • IEのセキュリティ保護アラート
  • IEの Active X コンテンツ再生の確認ダイアログ
  • FLASH PLAYER のセキュリティ保護設定ダイアログ

という2重3重のチェックを受ける事になります。ユーザーに何回もクリックさせることになるので、避けられるなら避けたい所です。

今回作成したコンテンツは、主要コンテンツへのゲートウェイみたいなもので、ローカルのHTMLにアクセス、インターネットのHTMLにアクセス、画面を閉じる、の機能が必要で、それらを FLASH PLAYER のセキュリティ設定ダイアログを出さずに実装するための考察をしてみました。

Windowsプロジェクタを使う

Windowsプロジェクタにパブリッシュする際は、

  • ローカル上のHTMLにアクセスする際は直接呼ぶ
  • インターネット上のHTMLにアクセスする際は、ローカル上のリダイレクトページを噛ませる
  • ウィンドウを閉じる(コンテンツの終了)にはfscommand("quit");を使用

で、アラートを出す事無く要件を満たしました。

あくまでHTMLでSWFを呼ぶ

SWFにパブリッシュした際は、上記の2重チェックを避けるためにもSWFObjectなど、外部を使用してSWFを呼び出します。セキュリティ保護のアラートだけは避けられませんが・・その上で、

  • ローカル上のHTMLにアクセスする際は直接呼ぶ
  • インターネット上のHTMLにアクセスする際は、ローカル上のリダイレクトページを噛ませる
  • ウィンドウを閉じるにはを記述したローカル上のHTMLファイルを呼ぶ

getURL("javascript: HOGEHOGE ");はインターネットへのアクセスとみなされますので、getURLでは呼べません(呼べるけどユーザーにセキュリティ設定を強要する)。

自分自身にクエリを渡して(hogehoge.html?mode=1とか)クエリによってwindow.close();を実行とかやろうとしたけど、getURLからはクエリがわたらない?みたい(検証不足)。

で、最終手段としてはウィンドウを閉じるためだけのHTMLファイル。 これはカッコわるいですねー・・

FLASH8以降だとパブリッシュの際にセキュリティ設定できるようなので、こういう面倒なことにはならないのかしら?今後はローカルでフラッシュを使うとき気をつけなければ。