プロが教える店舗&オフィスのセキュリティ対策術

親ウィンドウから子ウィンドウを開く際、子ウィンドウ先でstyle.displayを使って答えを開くようにしたいと思っています。
下記のような構成で作ったのですが、子ウィンドウ先のdocumentを認識してくれない時もあるようで、答えが開く時もあれば、開かない時もあり対処を知りたいと思っています。

*** 親ウィンドウ ***

<script language="JavaScript">
<!--
function OpenAns () {
mywin = window.open("aaa.html", "x", "");
mywin.document.getElementById("id1").style.display="inline";
}
// -->
</script>

<a href="javascript:void(0)" onclick="OpenAns();">答え</a>


*** 子ウィンドウ ***
<body>
...
<span id="id1">答えです。</span>
...
</body>

A 回答 (2件)

>Netscapeだけの事象に関し、想定される問題


全然読めないのではなく
やっぱり、読めたり読めなかったりするんですよね?
その場合は、やはり、読込が完了しているかどうかいうことではないかと思います。
部分的ではなくて、全部が読み込まれないといけないのかもしれないし・
*
子ウインドウが開いたままの時は問題なく実行できるのですよね。
始めて子ウィンドウを開くときには
answer.html?no=10
とかクエリーを渡して、
そのページ自体にonload時に、指定されたnoをinlineにするとかするようにしたら確実かもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。IEはOK,Firefoxの場合、子ウィンドウが開いたままだと正しく表示、Netscapeの場合は、新規Open/ウィンドウが開いたままでもNGとなりました。

ブラウザーに依存するようなので、このあたりは又調べたいと思います。

ヒントを頂いたおかげで、助かりました。

お礼日時:2005/11/12 00:05

ちょっと分からない部分があるのですが、


「答えです」の部分をstyle.display="inline"する意味はあるのでしょうか?
子ウインドウを開いてその時始めて答えが表示されるのであれば、特別何もする必要がないような気がします。
*
元々そのページの答えがdisplay=noneになっていて、
タイミングによってdisplay=inlineにする時
それが、できたりできなかったりするのは、
多分、ページの読み込みがまだ完了していない時に実行しようとしているからだと思います。
mywin.document.getElementById("id1")
がまだ存在していなければ、少し待つと言うようにする必要があるかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。IEに関しては期待通りの動きとなりました。

質問内容はかなり簡潔に記載しておりますが、実際は親ウィンドウに複数の質問があり、子ウィンドウ先参照ページでも対応する複数回答があります。
そのため、親ウィンドウ側のある質問Aをクリックすると、子ウィンドウ先ではそれに対応する回答Aのみを表示させたいということでした。
子ウィンドウ先は全て'none"でロードされております。

ご回答いただいた通り、インターバルを付けてみたら、IEに対しては期待通りの動きをしてくれました。
しかし、Netscapeの方ではインターバルを長くしても、
mywin.document.getElementById("id1") has no properties となってしまいます。

もしこのNetscapeだけの事象に関し、想定される問題があればご教示いただけますでしょうか? 

お礼日時:2005/11/11 17:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!