JavaScriptで子ウインドウから親ウインドウにフォーカスを当てるには?

[上に] [前に] [次に]
MIKA 1999/09/14(火) 19:40:42
以下のことを行っています。
 1.JavaScriptで別ウインドウ表示
 2.別ウインドウから、親ウインドウのlocation変更
  window.opener.top.document.location.href="xxxx.html";
 3.別ウインドウから、親ウインドウにフォーカスをあてる
  window.opener.focus();

しかし、JavaScriptでエラーになってしまいます。
どうも、上記3で引っ掛かっているらしいです。(IE4.0 SP2)
どのように書けば、エラーが解決されるのでしょうか?

Nobu3 [E-Mail] [HomePage] 1999/09/14(火) 23:35:35
2.の前に、alert(window.opener.location)で、どのファイル(フレーム、ウィンドウ?)か調べてみてください。
topを変更するという事は・・・。

回避できるかわかりませんが、2.の前に、wwin=window.opener.top;
などで、別の変数に代入してはどうでしょう?

N.I.V 1999/09/15(水) 00:31:41
あの、もしかして本題と外れるかもしれませんが、私の経験で、
IEではJavaScriptの割り込みや実行のタイミングが微妙に違うのでは、という感じがあります。

たとえばOnLoadで読み込んだ関数(SetTimeout使用)をOnUnloadでクリア(ClearTimeout)すると言うことをやったとき、
NCではまったく問題がなかったのですが。
IEではたまに、「宣言されてない値をクリアしようとした」旨のエラーが出ました。

う〜ん、なんか良く判んなくなってきましたが、「フォーカスを当てる対象が存在するか」のチェックを、きつめにやってみてはいかがでしょうか?
やってたら、ごめんなさい。

長月 1999/09/15(水) 07:42:05
開いた側にfocus()を入れておくのも一つの手だけど
<SCRIPT LANGUAGE='JavaScript'>
focus();
</SCRIPT>
これだけだから...

MIKA 1999/09/15(水) 09:32:03
[[解決]]
みなさん、レスありがとう

とりあえず、Nobu3さんの方法でやってみました。
すると、1回目は上手くいくのですが、
戻るボタンを押して再度実行すると、「アクセスは拒否された」というエラーになってしまいました。
次に、N.I.V さんの「フォーカスを当てる対象が存在するか」という
言葉をヒントに、2と3をひっくり返して見ました。
つまり、親ウインドウにフォーカスをあててから、ロケーションを変えた訳です。
(ひょっとしたらロケーションを変えた時点で、openerがいなくなっちゃうのかな?と思ったからです。)
そしたら、なんと上手くいってしまいました。私の浅はかな考えが、あたっちゃたのかな?
まあ、とりあえず上手くいったのでよしとしましょう。
ほんと、みなさんありがとうございました。

[上に] [前に] [次に]