この情報は、米国アドビシステムズ社が提供している情報をもとにローカライズし、作成したものです。

 

日本語環境での動作保証はしておりませんのでご了承ください。

 

内容 (What's Covered)

 

この文書では、ダウンロード可能なサンプルを使用して、Adobe Flash でポップアップウインドウを作成するいくつかの方法について説明します。

標準的な HTML ページでは、ブラウザウインドウは HTML ページ内の JavaScript 関数によって開かれ、制御されています。ブラウザウインドウは、Flash ムービーから開いたり閉じたりすることもできますが、ウインドウはブラウザのコンポーネントであるため、Flash からブラウザに新しいウインドウを開くよう指示する必要があります。

 

メモ : この文書では、JavaScript 関数について可能な限り説明しますが、JavaScript について詳細に解説することは目的としていません。

 

A. サンプルファイルのダウンロード

B. メソッド

C. getURL/navigateToURL

D. JavaScript による getURL/navigateToURL

E. ExternalInterface

F. fscommand

G. 拡張機能

 

 A. サンプルファイルのダウンロード

 

以下のリンクから、この文書で説明する 3 つの方法が含まれたサンプルファイルをダウンロードします。

 

ソースファイルのダウンロード : popup_windows.zip(149 K)

 

メモ : ソースファイルを開くには、Flash 8 以降が必要です。

 

 B. メソッド

 

以下のメソッドは、それぞれ難易度と制御できるレベルが異なります。一部のブラウザとは互換性がない場合もあります。

 

メソッド

難易度

ブラウザとの対応

getURL/navigateToURL

最も簡単に使用できます。ただし、ウインドウを制御することはできません。

すべてのブラウザに対応しています。

JavaScript による getURL/navigateToURL

単純で一貫性があります。

Internet Explorer 4.0 以降(Windows)、および Internet Explorer 5.0 以降(Macintosh)で動作します。

ExternalInterface*

柔軟性がありますが、より新しいブラウザを必要とします。

Internet Explorer 5.0 以降(Windows のみ)、Netscape 8.0 以降、Mozilla 1.7.5 以降、Firefox 1.0 以降、Safari 1.3 以降で動作します。

fscommand

高度です。

Internet Explorer 4.0 以降、Netscape Navigator 3.x/4.x で動作します。

ActiveX および LiveConnect が有効なブラウザに対応しています。

* ExternalInterface を利用するには、ユーザの Web ブラウザが一部の Web ブラウザによってプラグインスクリプトとして公開されている ActiveX または NPRuntime API のいずれかをサポートしている必要があります。

 

 C. getURL/navigateToURL

 

このメソッドでは、getURL(ActionScript 2.0)または navigateToURL(ActionScript 3.0)関数を使用して、新しい空白のウインドウにターゲットを指定することにより新しいブラウザウインドウを作成します。このメソッドは単純ですべてのブラウザで機能し、JavaScript を必要としません。ただし、ウインドウの場所、サイズ、スクロールバー、またはツールバーを制御することはできません。

 

ActionScript 2.0

getURL("http://www.adobe.com", "_blank");

 

ActionScript 3.0

var url:URLRequest = new URLRequest("http://www.adobe.com"); navigateToURL(url, "_blank");

 

 D. JavaScript による getURL/navigateToURL

 

このメソッドでは、getURL(ActionScript 2.0)または navigateToURL(ActionScript 3.0)関数を使用して、パブリッシュ後に HTML ページに追加した JavaScript 関数を呼び出します。このメソッドは単純で、JavaScript の知識をほとんど必要としませんが、ブラウザによっては機能しない場合があります。B. メソッドの表を参照してブラウザの対応状況を確認し、すべての対象ブラウザで動作確認を行ってください。

使用する JavaScript 関数は window.open で、url の前に "jacascript:" を配置してブラウザにこのテキストが URL ではないことを通知することにより、getURL または navigateURL コマンド内で直接実行することができます。これは、getURL または navigateURL の結果として、ブラウザが現在のページから新しい URL に移動することを意味するものではありません。ページ移動しないことを回避するため、void(0) JavaScript コマンドを使用します。

 

window.open を使用すると、ウインドウの位置、サイズ、スクロールバー、ツールバーなど、作成されるウインドウのプロパティを制御することができます。window.open についての詳細情報は、Mozilla 開発者センターで検索することができます。

 

ActionScript 2.0

var jscommand:String = "window.open('http://www.adobe.com','win','height=200,width=300,toolbar=no,scrollbars=yes');"; getURL("javascript:" + jscommand + " void(0);");

 

ActionScript 3.0

var jscommand:String = "window.open('http://www.adobe.com','win','height=200,width=300,toolbar=no,scrollbars=yes');"; var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);"); navigateToURL(url, "_self");

 

メモ 1 : HTML 内に JavaScript 関数を記述、および ActionScript を使用して getURL または navigateToURL で "javascript:<関数名>();" を実行することができます。

 

メモ 2 : navigateToURL は、デフォルトでは "_blank" を使用します。"_self" は JavaScript コマンドを確実にアクティブウインドウへ送るために使用します。

 

 E. ExternalInterface

 

このメソッドでは、Flash 8 で導入された ExternalInterface クラスを使用して JavaScript window.open コマンドを呼び出します。ExternalInterface は、ブラウザと Flash ムービー間の均一な JavaScript の統合を可能にしますが、ブラウザによっては機能しない場合があります。B. ソッドの表を参照してブラウザの対応状況を確認し、すべての対象ブラウザで動作確認を行ってください。

 

上記の JavaScript による getURL/navigateToURL のように、ExternalInterface は Flash で直接 JavaScript window.open を実行するために使用しますが、代わりにコマンドを直接呼び出して JavaScript リンクを使用しません。

 

ExternalInterface は、ブラウザによってはサポートされていない場合があるため、あらかじめブラウザでサポートされているかどうかを確認し、サポートされていない場合は別の方法でポップアップウインドウを作成することをお勧めします。

 

ActionScript 2.0/3.0 共通

if (ExternalInterface.available) { ExternalInterface.call("window.open", "http://www.adobe.com", "win", "height=200,width=300,toolbar=no,scrollbars=yes"); }

 

 F. fscommand

 

このメソッドは、Flash Player 4 以降の fscommand 関数を使用して、新しいウインドウを作成する JavaScript 関数を HTML ページ内で呼び出します。ページをパブリッシュした後、そのページに JavaScript 関数が追加され、新しいウインドウの URL とパラメータが指定されます。ブラウザによってはこのメソッドに対応していない場合もあります。B. メソッドの表を参照してブラウザの対応状況を確認し、すべての対象ブラウザで動作確認を行ってください。

 

以下の操作を行います。

Flash ムービーの作成(ActionScript 2.0/3.0 共通)

  1. ボタンまたはキーフレームに fscommand アクションを割り当てます。



    fscommand("openWindow", "http://www.adobe.com|win|height=200,width=300,toolbar=no,scrollbars=yes");



    メモ : ExternalInterface と異なり、fscommand は JavaScript 関数に対する 1 つの引数を渡すのみとなります。JavaScript window.open パラメータは、HTML で定義されている箇所に 1 行で記述する必要があります。
  2. [ファイル] メニューから [パブリッシュ設定] を選択します。
  3. [HTML] タブの [テンプレート] ポップアップメニューから [Flash(FSCommand サポート)] を選択します。
  4. Flash ムービーと HTML ファイルの両方をパブリッシュし、以下の手順へ進みます。

 

HTML ページに JavaScript を追加

  1. メモ帳などのテキストエディタ、または Dreamweaver などの HTML エディタを使用して、上記手順でパブリッシュした HTML ファイルを開きます。
  2. HTML ファイルで「//コードをここに配置します。」(括弧は含みません。)と記述されている行を探し、以下のコードで置き換えます。



    if (command == "openWindow") { var windowArgs = args.split("|"); var domain = windowArgs[0]; var name = windowArgs[1]; var params = windowArgs[2]; window.open(domain, name, params); }



    ※ URL、サイズ、ツールバー、およびスクロールバーのカスタム値を使用することができますが、最初にこのコードを使用して基本動作のサンプルを作成することを推奨します。
  3. HTML ファイルを保存して、ブラウザでページを検証します。

 

メモ : Flash から HTML ファイルを再度パブリッシュした場合、上記手順で HTML ファイルに追加したコードが上書きされるため、再度追加する必要があります。パブリッシュ時の上書きを回避するには、[パブリッシュ設定] ダイアログボックスで [HTML] からチェックをはずします。

 

fscommand を Flash から実行する際、<ムービー名>_DoFSCommand で定義される関数は、Flash で使用される 2 つの引数で実行されます。最初の引数は、どの JavaScript アクションを実行するかを決定します。DoFSCommand 関数内に命令文があり、コマンドが "openWindow" の場合は、新しいウインドを開くために JavaScript と関連して動作するかどうかを確認します。2 番目の引数は、次に、値をコマンド内で使用するための決定をするために使用されます。それが 1 つの文字列としてJavaScript に入るので、split()コマンドは、パイプ(「|」)デリミタを使用して、文字列を window.open のために 3 つの異なる引数に分けるために使用されます。

 

 G. 拡張機能

 

この文書で説明した作成方法のほか、Flash でポップアップウインドウを作成するための使いやすい拡張機能が Adobe Exchange から入手することができます。入手可能な拡張機能は、Flash 開発者によって作成されたその他の拡張機能や、Dreamweaver 用の JavaScript Integration Kit を含みます。

 

Adobe Exchange で、Flash または Dreamweaver で使用可能な最新の拡張機能を検索してください。多くの拡張機能は、サードパーティ製であることにご注意ください。入手する拡張機能の詳細について、各拡張機能のダウンロードページに記載されている内容を十分に確認してください。拡張機能の使用について詳しくは、Adobe Exchange を参照してください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー