- 締切済み
IEで新しいウインドウを開き、新しいウインドウから元のウインドウを操作しようとするとエラーが出ます。
新しく開いたウインドウから、元のウインドウにフォーカスを戻す際にif文でwindowのopenerプロパティのclosedがtrueかfalseかを判定しようとしているのですが、ブラウザがIEですと「RPCサーバが利用できない」といった感じのエラーが出ます。 何かほかに回避策があれば教えていただきたいのですが…。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- atsuota
- ベストアンサー率33% (53/157)
『新たにウインドウを呼び出し、そこに元の親ウインドウのURLを持ってくる』のであれば、必ずそうするように記述すればよいと思います。 function hoge2(URL){ // URL:元の親ウインドウURL //強制的に親ウィンドウを閉じる window.opener.close(); //新たにウィンドウ呼び、元URLを持ってくる NewWin = window.open("","NewWindow"); NewWin.location.href = URL; //フォーカス NewWin.focus(); return true; } ただし、親ウィンドウを強制的に閉じるので、「いいですか?」と毎回聞かれることになります。 ちょっとウザいですね。
- atsuota
- ベストアンサー率33% (53/157)
まず、windowオブジェクトのclosedプロパティはIEではうまく機能しないことがわかっています。 (nicolaさんだけじゃないです。安心してください) ところで、親ウィンドウにフォーカスを戻すだけが目的ならば、判定などせずに function hoge(){ window.opener.focus(); return true; } でよいのでは? この場合、親ウィンドウが閉じられていれば、単に何も起こらないだけになります。
補足
すばやいお返事ありがとうございました。 ちょっと説明が足りなかったのですが、親ウインドウが閉じられている場合は、『新たにウインドウを呼び出し、そこに元の親ウインドウのURLを持ってくる』という処理をしたいのです。 (子ウインドウの方が普通のウインドウならよいのですが、メニューバー等要らないものをいろいろ取り去ってしまっているので…。) なにかよいアイディアがあれば、ぜひよろしくお願いします。
お礼
みなさん、丁寧な回答をありがとうございました。 結局今回は、別の方法で代用という結果になりましたが、今後別の場面でみなさんの書いてくださった情報を活用したいと思います。 いつまでも解放していてもなんなので、ここで回答を締め切らせていただきます。 ありがとうございました。