親ウィンドウで関数を動かし、その復帰値で表示処理を変えるページを作る方法

このQ&Aのポイント
  • 好きなタイミングで関数を呼ぶ方法についての質問です。親ウィンドウで子ウィンドウを作成し、MyFunc()を呼び出します。その後、MyFunc()からの復帰値を取得し、子ウィンドウを閉じることを目指しています。
  • 親ウィンドウでは子ウィンドウをshowModalDialogで前面表示しているため、親ウィンドウには触れられません。VBのように「call MakeChild()」といった方法で親ウィンドウソース内の任意のタイミングで関数を呼ぶ方法を教えてください。
  • 親ウィンドウで関数を呼ぶ方法について教えてください。親ウィンドウで子ウィンドウを作成し、MyFunc()を呼び出し、その復帰値を取得する場合、showModalDialogによる前面表示のために親ウィンドウには触れられません。VBのように「call MakeChild()」のように関数を呼ぶ方法を教えていただけますでしょうか。
回答を見る
  • ベストアンサー

好きなタイミングで関数を呼ぶ

いつもお世話になっています。 親ウィンドウで関数を動かし、その復帰値で表示処理を変えるページを作っています。 復帰値を待つ間、子ウィンドウで『処理中』などのメッセージを表示させる処理 (マイクロソフトのWindowsUpdateでコンピュータ情報を読み込む際の処理と同じかな?) を作りたいと思っています。 親ウィンドウ内----------------------------------------------    (1)子ウィンドウを作成(MakeChild()呼び出し)    (2)MyFunc()を呼ぶ    (3)MyFunc()からの復帰値を取得    (4)子ウィンドウを閉じる(CloseChiled()呼び出し)             MakeChild():子ウィンドウ作成関数             CloseChild():子ウィンドウ閉じる関数             MyFunc():ExcelVBAマクロ呼び出し関数 ----------------------------------------------------------- としたいのですが、子ウィンドウをshowModalDialogで前面表示しているので 親ウィンドウには全く触れられません。 VBのように "call MakeChild()" などで、 親ウィンドウソース内の任意のタイミングで関数を呼ぶにはどうしたらよいのでしょうか? ご存知の方、教えてください!!

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

モーダルダイアログが開いている間は親ウィンドウの全機能が停止するので、ダイアログを出している間に処理、というのはできません。 ですので、showModalDialog で開くHTMLの方に MyFunc() を置き、実行し終わったらその結果を親ウィンドウへの返却値として設定してウィンドウを閉じればよいのではないかと思います。 各HTMLは、こんな感じ。 ■親HTML ※任意の場所で   var ret = showModalDialog("dialog.html", null, "dialogWidth:300px;dialogHeight:100px");   // ret は MyFunc からの復帰値 ■dialog.html(ダイアログ用) <SCRIPT language="JavaScript"><!-- function OnLoad() {   window.returnValue = MyFunc();   window.close(); } function MyFunc() {     :   return ××; } //--></SCRIPT> <BODY onLoad="OnLoad()"> <TABLE width="100%" height="100%"><TD align="center">処理中・・・</TD></TABLE> </BODY> ※ダイアログが閉じられた時に window.returnValue に設定されていた値が、showModalDialog の戻値になります。

参考URL:
http://tohoho.wakusei.ne.jp/js/window.htm#showModalDialog
lovelypooh
質問者

お礼

御礼が遅くなってしまってすみません・・・。 できました!ありがとうございます!! 親子HTMLの間で復帰値の受け渡しができるとは知りませんでした。 他のパターンにも活用できそうです。 ありがとうございました。 また機会がありましたら、よろしくお願いします(ペコリ)。

関連するQ&A

  • 関数の呼び出しかた

    こんばんは。 最近javascriptを始めたのですが一つどうしても 分からない事があり質問させて頂きました。 ユーザー関数の呼び出しの方法なのですが、 入門書で勉強中に関数の呼び出しは、たとえば msgtest関数を定義していたとして  msgtest(); として呼び出すのが基本だと考えたのですが ウィンドウを常に前面に出すサンプルスクリプト 中、window.onblur = msgtest; という風に引数のカッコなしで呼び出しており、 カッコをつけると動作しないという事が 起こりました。理由がわからず困っています。 何故この際引数のカッコをつけてはいけないのでしょうか?

  • safari2.0でWindowsIEのような「常に前面に表示」をしたい

    WindowsIEとsafari2.0で動作するWebページを作成しています。 WindowsIEで可能な  「ウィンドウを常に前面に表示し、   閉じられるまで他のウィンドウに遷移しない」 をsafari2.0でもできればと考えています。 # windows.showModalDialog(); safari2.0でもこのようなことが可能なのでしょうか?

    • ベストアンサー
    • Mac
  • IE7でのwindow.openerがnullになる

    showModalDialogで、子ウィンドウを開き、子ウィンドウからwindow.openerの関数を呼ぼうとしています。Firefoxでは、問題なく呼べるのですが、IE7ですとwindow.openerそのものがnullになってしまいます。 回避策はあるのでしょうか? IE7のバグですかね? 親 window.showModalDialog("hoge.html", this, "スタイル"); 子 var a = window.opener.hoge(); といった形で使用しています。ちなみにこの前にalert(window.opener)を入れたら、見事にnullって表示されました。

  • 「画面が閉じられた」という行為をトリガーとして使えますか?

    親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • safari2.0でWindowsIEのような「常に前面に表示」をしたい

    # 過去に同じ件で質問をしたのですが、 # Mac mini(Tiger)でテストしたところ、 # 解決できませんでしので再度質問します。 WindowsIEとsafari2.0で動作するWebページを作成しています。 WindowsIEで可能な  「ウィンドウを常に前面に表示し、   閉じられるまで他のウィンドウに遷移しない」 をsafari2.0でもできればと考えています。 WindowsIEでは「windows.showModalDialog();」で実現できるのですが、 Tiger の safari2.0 で試験したところ、 「windows.showModalDialog();」は動作しませんでした。 「windows.showModalDialog();」が WindowsIE 固有の 機能であることは承知済みなのですが、 これに変わる機能があればと思っています。 safari2.0でもこのようなことが可能なのでしょうか?

    • ベストアンサー
    • Mac
  • PowerShellの関数呼び出しについて

    PowerShellでの関数呼び出しでエラーとなります。 (定義より前にコールしているので当たり前なのですが) ********** (大まかな処理内容です) ********** call main() main() { 処理 } ******************************************************** 【質問1】  ・エラーを出さないようにする方法はないのでしょうか?   (例えばC言語のプロトタイプ宣言のような) <補足>  現在VBScriptで行っているバッチ処理をPowerShellに移行している初心者です。  色々検索はしましたが、答えが得られずの質問になります。  お時間がある時で構いませんので、ご回答をお願い致します。

  • ダイアログ内での遷移方法

    親ウィンドウのリンクからJavaScriptのshowModalDialogでダイアログを表示する画面を作成しているのですが、表示したダイアログの画面にもリンクがあってダイアログ内で遷移してほしいのですが、別ウィンドウが開いてそちらの方に画面が表示されてしまいます。 JavaScriptのshowModalDialogやreturnValueで試しているのですがどうもうまくいきません。 何か方法をご存知の方いらっしゃいませんでしょうか? よろしくお願い致します。

  • 画面を閉じる(×ボタンやタスクバーから)をトリガーに処理を行えるのでしょうか?

    親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? onUnloadイベントを試しましたが、「×」ボタンや、タスクバーを右クリック→閉じる場合は処理がおこわなわれませんでした。 よろしくおねがいします。

  • ExcelVBAでセルの内容変化イベントを取得したい

    ExcelVBAの初心者です。VBはある程度理解してます。 あるセルの内容が変化したときのイベント処理関数を 作りたいと思いますが、どういう手順で、そのイベント関数を 表示する(または作成する)のでしょうか。 教えてください。 よろしくお願いします。

  • リンク時、親ウインドウを最前面に表示させたい。

    子ウインドウのURLをクリックすると、親ウインドウのフレーム内に内容を表示させています。その際に、子ウインドウが最前面に来ているため、全画面表示していると親ウインドウのフレーム内が変わったことがわかりません。リンクの時に親ウインドウを最前面に表示させたいのですが、何か良い方法はありますか?

専門家に質問してみよう