- - PR -
【JavaScript】onloadイベントの取得について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-05-19 13:13
JavaScriptに関して以下の質問があります。
● 環境 IE7とFirefox2にて確認を行っています。 しかし、以下のような問題があります。 ● 事象 あるウィンドウAから別ウィンドウBをopen関数で開きます。 open関数が返すWindowオブジェクトは変数に保管しておきます。 その際、ウィンドウBのonloadのイベントハンドラを登録しておきます。 つまり、ウィンドウAのスクリプトでウィンドウBのonloadイベントを捕捉したいのです。 var w = window.open(url, "testWindow"); w.onload = testFunc; testFunc = function() { ・・・ } しかしながら、ウィンドウB側で再描画した際、このイベントハンドラはコールされませんでした。 これは何かの制約があるのでしょうか? それとも手順に問題があるのでしょうか? お気づきの点がありましたら、ご指摘ください。 よろしくお願いいたします。 | ||||
|
投稿日時: 2008-05-19 13:55
window.openを呼んで、ウィンドウBのonLoadイベントが終わってから
イベントハンドラを登録しているからです。 | ||||
|
投稿日時: 2008-05-19 14:12
burton999さん、ご指摘ありがとうございます。
私の理解が間違っているかもしれませんが、ウィンドウBが表示された後、明示的にウィンドウBで再描画(ブラウザでF5押下など)した場合にも、やはりonloadイベントは捕捉できないでしょうか? (初期表示時のonloadは捕捉できなくても構いません) よろしくお願い致します。 | ||||
|
投稿日時: 2008-05-19 14:21
ウィンドウBのonLoadイベントで
opener.ChildLoad(); //ChildLoad()メソッドはウィンドウAに定義 でウィンドウBのイベントを通知することはできそうですね。 他にもスマートな方法があるかもしれませんが、私は知りません。。。 | ||||
|
投稿日時: 2008-05-19 15:11
burton999様の案でも良いと思います。
ただ、ページBは呼出元を考慮しなければならなくなります。 完全にページAだけで完結したいのであれば・・・
ブランクページを開いてからURI指定を行っているのは 読み込むタイミングを遅らせる為です。 これは「イベントの捕捉」ではなく「ページ状態の監視」による手法です。 他にもっと良い方法があるかもしれません。 | ||||
|
投稿日時: 2008-05-19 15:24
burton999さん、再度ご指摘ありがとうございます。
くまっちさん、サンプルのご提示ありがとうございます。 大変参考になります。 もう少し私のやろうとしていることを説明いたします。 目指しているのは、自動テストツールの作成です。 自動テストツールは、基本的にJavaScriptで構成するつもりです。 このツールからテストしたい画面を開き、シナリオデータ(これもJavaScriptで記述します)に従って画面項目を設定し、例えばSUBMITを行います。 その結果、表示される画面のDUMPをとり、さらに次のシナリオデータの実行を実施します。これの繰り返しです。 (JMeterでも似たようなことができると思いますが) この「次のシナリオ実行」のトリガーをテスト対象画面のonloadとして取得したいということになります。 テスト対象画面をiframe上に表示すれば、onloadを捕捉できたのですが、できればテスト対象画面を別ウィンドウにしたいと考えて改造しようとして、以下のような問題に遭遇しました。 もう少しいろいろ試して、無理なようならiframe版ですすめたいと思います。 ありがとうございます。 |
1