ローカルでswf再生したとき、またはgetURLやnavigateToURLでページ遷移しようとしたときに、Adobe Flash Playerは潜在的に危険な操作を停止しました。というアラートがでたことあるかと思います。「Adobe Flash Playerは潜在的に危険な操作を停止しました」の回避策とグローバルセキュリティ設定の方法を紹介します。
グローバルセキュリティ設定方法
Flash Playerヘルプ:グローバルセキュリティ設定パネル
http://www.macromedia.com/support/documentation/jp/flashplayer/help/settings_manager04.html
このページにあるFlash部分の「編集」と書かれているプルダウンメニューの「追加」をクリックして、アラートを出しているswfファイル直接設定するか、フォルダー丸ごと設定するかのどちらかが選べます。すると、「これらのファイルとフォルダを常に信頼する」項目に追加されたと思います。設定はこれで終わりです。ボクはCドライブ全部にかけてます。あまり良くないかもしれませんけどね・・・汗
「Adobe Flash Playerは潜在的に危険な操作を停止しました」のアラートは何を訴えているのか 簡単に言うと、ローカルで再生されるswfファイルが、別のページへ遷移するけどいいですか?と聞いてくれてるわけですね。もしそのswfファイルが誰が作ったかわからず、悪意があるswfファイル開いた瞬間にウィルスに感染してしまう。ってことになりえるかもしれません。それを未然に防ぐために、そのswfファイルは信頼できるかどうか。前項のグローバルセキュリティ設定パネルで設定して許可をしたということです。
このアラートが出る条件は以下のときに出ると思います。
・getURLやnavigateToURLなどのページ遷移する関数が書かれているswfファイルを、そのままダブルクリックで再生する
・htmlファイルにswfを貼り付けたファイルを、ローカルからブラウザで開く
・ボタンアクションなどでページ遷移しようとした瞬間
Flash Debug Playerが出したエラーログ
SecurityError: Error #2028: ローカルファイルシステムの SWF ファイル file://C:\hoge.swf はインターネット URL http://hoge.com/ にアクセスできません。 at global/flash.net::navigateToURL() at MethodInfo-404() ActionScript 3.0 コンポーネントリファレンスガイド:ランタイムエラー一覧
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/runtimeErrors.html#2028
getURLやnavigateToURLでページ遷移しない!ページに飛ばない!と言われたら そもそもこのアラートが出るだけでもマシかもしれません。アラート自体がでない可能性もあるので、クライアントさんとかに確認してもらってる時に「ページ飛ばないよ」と言われたら、このアラートの可能性が高いと思います。確認出しの方法はいくつかあると思いますが、zipで圧縮してメールで送る場合、ローカルで再生される可能性があるので回避したい。でも、わざわざこの設定をしてもらうのもなんか悪い気がする。。。手っ取り早いのはサーバーにアップして、httpアドレスを直接ブラウザを介して確認してもらいたいところですが、公開してはいけない繊細なコンテンツの場合だと、グローバルセキュリティ設定をしてもらうしかないですね。
かなり限られた条件だと思いますが、ボクが見ているFirefoxではFlsahコンテンツを触ると周りに点線が出るという現象が起きてます。その点線は、テキストリンクや画像リンクに対してクリックしたときと同じ点線が表示します。
点線が出てしまう条件の予想 Windows XP
Firefox(Mac版 Firefoxでは出ませんでした。)
swfobject v2.2 でFlashを表示。 点線を消す方法 根本的解決になるかどうかはわかりませんが、swfobjectでも最終的にはobjectタグをdocument.writeしているので、objectタグに対してoutline: none;としてあげると、ボクの環境でFlashの周りの点線は消えました。
コレでいいのかなー^-^;
CSS 1
2
3
object{ outline: none; } 追記:この点線は、Firefoxでフォーカスがあたっているところに対しての点線でした。見てくれを重視するために、この点線自体を消したい場合は、全体に対してCSSでoutline:nonet;とするといいと思います。
つまりどういうことかというと 1.新規ウィンドウ、または新規タブでFlashが載っているページを開く。
2.ページ内リンク、a nameタグで移動する。
※このとき、ブラウザの戻るボタンが押せるようになっているはず。
3.ブラウザの戻るボタンを押す。
4.Flashが正しく表示されてない。
というバグ?を聞いたことがあります。いろいろ調べてみると、どうやらFirefoxやSafariは大丈夫で、IE6と7で確認しました。 そのFlashコンテンツは、外部XMLファイルを読み込んで、その中に書かれている画像パスから外部外部画像データをすべて読み込んでから再生する。 という仕組みになってて、再生するタイミングで、ステージの最前面に白いシェイプをおいて、そいつに対してdanndannアルファを0%に、フェードアウトして演出していました。
どうやら、戻るボタンを押したときに、なぜかタイムラインが1フレーム目に戻っているようにみられ、 最初のフレームにXMLの読み込みや画像の読み込みのAction Scriptは実行済みの状態でした。 Flash Playerのキャッシュかブラウザのキャッシュか。。 そして、最終的に考えられる条件というのが、「シーン」で再生しているということです。
解決方法 このように、「シーン」のタイムライン上で1フレーム目にいろいろAction Script、諸々の条件で再生。5フレーム目に移動していますね。 今回の問題点は、ページ内リンクからブラウザの戻るを押すと、同じページ内に戻ってくるわけですが、 Flashは5フレーム目に再生しきっている状態で戻ってしまうわけです。
回避方法は、シーンに1フレームだけにMovieClipをおいて、その中にAction Scriptやコンテンツを置いたら解消されました。 ただ、これでは同じページ内に戻ってきているにも関わらず、またXMLを読みにいったり画像をロードしたりすることになってしまいます。 ユーザビリティが悪い場合は、「シーン」の1フレーム目に書かれたAction Scriptですべてお完結させれば事済みますが、 既に作ってしまっているFlashを修正する場合は、新規シンボルで空のMovieClipを「シーン」1フレーム目に置いて、 「シーン」あったAction Scriptやコンテンツは、すべてさっき作った空のMovieClipの中にペーストしてしまいましょう。 そして「シーン」には1フレーム目にペーストしたMovieClipがあるだけ。 一応これで、ページ内リンクからブラウザの戻るボタンを押したときに挙動がおかしくなるのは避けれると思います。