- ベストアンサー
window.openでフレームページを開いたときのフレーム名Object生成について
いつもお世話になります。 今回、別の方の疑問に答えるためにフレームページの検証を重ねるうちに変な現象に行き当たってしまいました。 下記のようなJavaScriptを組み込んだページで、スクリプト内の関数から「sFramePageURL」で指定される 「frame01」及び「frame02」から構成されるフレームページを開いた際、新窓内のフレームにおけるObjectの 生成状況がブラウザによって異なります。 このリストの場合は「frame02」を監視しています。 「新しい窓を開いてFrame確認」のボタンを押すと、多少の時間差はあるのですが IE 8 FireFox 3.0.10 Opera 9.63 Netscape 7.1 はObjectが生成されます。 ところが Safari 3.1.1 GoogleChrome 2.0.172.31 に関してはチェック回数や時間間隔をどう増やしてみてもいっこうに生成されません。 処理終了後に「新しい窓のFrame確認」ボタンで確認するとしっかりとObjectが確認できるのですが・・・ この差異は仕様によるものでしょうか単なるバグでしょうか? また、これをSafari及びChromeで回避する(同一プロセス内でObject生成できる)手法などございましたらご教授お願いいたします。 ********************************************************* 作成した実験用ページ:ここから <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>TEST</title> </head> <SCRIPT Language="JavaScript"> <!-- var FrameContent_TEST; var sFramePageURL = 'http://www.hogehoge.jp/test/FramePage.html'; var sWinName = 'TestPage'; function fShowFramePage(){ FrameContent_TEST = window.open(sFramePageURL,sWinName,'width=800,height=700,scrollbars=1'); FrameContent_TEST.focus(); // *********************************** alert(typeof(FrameContent_TEST.frame02)); alert(typeof(FrameContent_TEST.frame02)); alert(typeof(FrameContent_TEST.frame02)); // *********************************** return true; } function fConfirmFramePage(){ // *********************************** alert(typeof(FrameContent_TEST.frame02)); // *********************************** return true; } //--> </SCRIPT> <body> <br> 試験フレーム1【ページ開く】<input type="button" value="新しい窓を開いてFrame確認" name="B1" onClick="fShowFramePage();"><br> 試験フレーム2【フレームチェック】<input type="button" value="新しい窓のFrame確認" name="B2" onClick="fConfirmFramePage();"><br> <br><br> </body> </html> ********************************************************* 作成した実験用ページ:ここまで
お礼
検証に時間がかかってしまい申し訳ありませんでした。 処理といいリストの美しさといいみごとな回答です。 本当にありがとうございました。 処理を見ると監視部分を関数化している以外はほぼ同じことをやっていたのに不思議でしょうがありません。これからじっくりと相違点を追跡して原因部分を探って生きたいと思います。