- ベストアンサー
子ウィンドウ先のstyle.displayを使って答えを開く方法
- 子ウィンドウ先でstyle.displayを使って答えを開く方法について説明します。親ウィンドウから子ウィンドウを開く際に、子ウィンドウ先のdocumentを認識しない場合があるため、対処方法を知りたいと思っています。
- 質問文章では、親ウィンドウと子ウィンドウの構成やスクリプトの内容について説明されています。親ウィンドウでOpenAns関数を定義し、子ウィンドウを開く際にstyle.displayを使って答えを開くようにしています。しかし、子ウィンドウ先のdocumentが正しく認識されない場合があり、答えが開かないこともあるようです。
- この問題の対処方法について説明します。確実に子ウィンドウ先のdocumentを認識するために、OpenAns関数内でwindow.openを実行する前に少しの時間待機することで解決できる可能性があります。具体的な対処方法はコード内のコメントに記載されています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>Netscapeだけの事象に関し、想定される問題 全然読めないのではなく やっぱり、読めたり読めなかったりするんですよね? その場合は、やはり、読込が完了しているかどうかいうことではないかと思います。 部分的ではなくて、全部が読み込まれないといけないのかもしれないし・ * 子ウインドウが開いたままの時は問題なく実行できるのですよね。 始めて子ウィンドウを開くときには answer.html?no=10 とかクエリーを渡して、 そのページ自体にonload時に、指定されたnoをinlineにするとかするようにしたら確実かもしれません。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ちょっと分からない部分があるのですが、 「答えです」の部分をstyle.display="inline"する意味はあるのでしょうか? 子ウインドウを開いてその時始めて答えが表示されるのであれば、特別何もする必要がないような気がします。 * 元々そのページの答えがdisplay=noneになっていて、 タイミングによってdisplay=inlineにする時 それが、できたりできなかったりするのは、 多分、ページの読み込みがまだ完了していない時に実行しようとしているからだと思います。 mywin.document.getElementById("id1") がまだ存在していなければ、少し待つと言うようにする必要があるかと思います。
お礼
回答ありがとうございます。IEに関しては期待通りの動きとなりました。 質問内容はかなり簡潔に記載しておりますが、実際は親ウィンドウに複数の質問があり、子ウィンドウ先参照ページでも対応する複数回答があります。 そのため、親ウィンドウ側のある質問Aをクリックすると、子ウィンドウ先ではそれに対応する回答Aのみを表示させたいということでした。 子ウィンドウ先は全て'none"でロードされております。 ご回答いただいた通り、インターバルを付けてみたら、IEに対しては期待通りの動きをしてくれました。 しかし、Netscapeの方ではインターバルを長くしても、 mywin.document.getElementById("id1") has no properties となってしまいます。 もしこのNetscapeだけの事象に関し、想定される問題があればご教示いただけますでしょうか?
お礼
回答ありがとうございました。IEはOK,Firefoxの場合、子ウィンドウが開いたままだと正しく表示、Netscapeの場合は、新規Open/ウィンドウが開いたままでもNGとなりました。 ブラウザーに依存するようなので、このあたりは又調べたいと思います。 ヒントを頂いたおかげで、助かりました。