btmup Blog

Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。

ActionScript JavaScript・jQuery

ActionScript 3.0 で Javascript を呼び出してウィンドウを閉じる方法。

投稿日:

ググっても情報がなぜか少ないので、とりあえずメモ的にアップ。

window.open() なんかで開いたサブウィンドウを、テキストリンクやボタンで閉じるための方法です。

HTML でウィンドウを閉じる

HTML ではこんな書き方をするヤツですね。

<a href="javascript:window.close();">このウィンドウを閉じる</a>

input タグを使う場合は、こんな感じ。

<input type="button" value="このウィンドウを閉じる" onClick="window.close()" />

Flash でウィンドウを閉じる

AS2 であれば、

on (release) {
getURL("javascript:window.close();");
}

と書けば動いてくれました。
(但し、MacOS9 + IE という古い環境では落ちることがあるそうで、「FLASH-JP」のCLOSEボタンJavascript:window.close();で強制終了に詳細と対応策が載ってます)

AS3だと getURL が使えません。
というか、そもそもの仕様が大幅に見直されているので、書き方もかなり変わっています。
詳しいことはよく分からないので、とりあえず結論だけ。
以下のように書けば、ウィンドウは閉じてくれます。

close_mc.addEventListener(MouseEvent.CLICK, closeClick);
function closeClick(evt:MouseEvent):void {
	ExternalInterface.call("window.close()");
}

イベントリスナーを設定して、関数を呼び出すのはお約束。
で、Javascript を ActionScript と絡めて使いたいときは、「ExternalInterface.call」を使えば良いようです。

window.close() だけじゃなく、他の Javascript についても、「(“〜”)」の部分を書き替えれば使えるみたいですよ。
まぁもちろん引数とか色々使うことの方が多いでしょうから、もっと複雑になってくるんでしょうけど。

window.close() のように単体で完結できる関数は、意外にもこんなシンプルなスクリプトで実現することができます。

ローカル環境では動作しない?

これ、ちょっとハマってしまった現象です。

具体的に検証した訳ではないんですが、どうもローカル環境では上記スクリプトは動作してくれないようです。
恐らく、Javascript 関連が動いてくれません。たぶん全滅。
alert ですら動いてくれませんでした。
(僕の環境は、MacOSX 10.4, Flash CS3, Firefox 3.5。Safari でも動かなかったような気がします)

それに気付かず、自分の書いたスクリプトが悪いんだと思い込んで試行錯誤すること数十分……。
光明が見えてきたのは、以前にサブウィンドウを開く方のスクリプトを使った別のデータを使って試していたとき。
間違いなく動作することを確認したはずなのに、まったく反応せず「あれ? 動いてたはずじゃ……?」となったワケです。
ローカルではウンともスンとも言わなかった「閉じる」ボタンが、サーバーにアップした途端、順調に(?)動いてくれました。

でも何で今まで気付かなかったんだろう……。
何かがバージョンアップしたときに何かの仕様が変わってしまったのか、それとも偶然サーバー側でしか確認していなかったのか……。
謎…………。

皆様も、お気を付けて。







-ActionScript, JavaScript・jQuery
-, , , , , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

アクセシブルなスライダーをJavascriptで実現 – 「Accessible News Slider」

ここで言う「スライダー」とは、「同じ構造の要素を限られたスペースで表示するために、要素ごとスライドさせて表示させるためのもの」という意味。 (↓こんなのです) 音量を調整するような「つまみ」のことでは …

no image

JavaScriptによるシンプルなロールオーバー。

ものすごくシンプルで使いやすいロールオーバーをご紹介。 最近、特別な理由がない限りこの方法でロールオーバーの設定をしています。 オリジナル版 使うのは「CSS HappyLife」さんの「ソースがシン …

no image

yuga.js で、別ウィンドウで開かないドメインを追加する方法。

「yuga.js」という jQuery プラグインが便利すぎて、最近ではほとんどデフォルトで使わせていただいています。 中でも重宝しているのが、「外部リンクの場合は別ウィンドウで開く」という機能。 余 …

no image

jQuery で CSS を切り替えて文字サイズを変更する 2 つの方法。

最近、文字サイズの切り替えボタンを設置しているサイトも多くなってきましたね。 自治体や病院など公共性の高いサイトを中心に、導入が進んでいるようです。 僕自身も医療系のサイトに関わることが多いのですが、 …

no image

yuga.js で自ページへのリンクを設定している画像がロールオーバーしてくれない。

yuga.js という非常に便利な JavaScript があります。 多くの機能が一つにまとまっていて、使い方も簡単で重宝させていただいているのですが、今回はその多機能が故にハマってしまったという例 …