• 締切済み

IE8のwindow.opener.location.href動作について

宜しくお願い致します。 IE8のjavascript「window.opener.location.href」の動作がIE7から変わった様で、思い通りの動作をしなくなりました。 1、WEBサーバ側の親ウィンドウからWinXPにインストールしたローカルサーバ側のPHPスクリプトへwindow.openで子ポップアップウィンドウを開きます。 2、ローカルサーバ側の子ポップアップウィンドウで特定のプログラムを走らせ、WEBサーバ側の親ウィンドウへローカルサーバ側の子ポップアップウィンドウからwindow.opener.location.hrefで、親ウィンドウの表示ページを切り替える。 という動作をしていたのですが、IE8にアップデートしたら、ローカルサーバ側の子ウィンドウからWEBサーバ側のURLを切り替えると、別ウィンドウで開いてしまい、親ウィンドウが2ページに分かれます。 さらに、元の親ウィンドウはURLが変更にならず、新しく開いたページのURLだけ変わっています。 この動作をIE7と同じ様に、子ウィンドウから元の親ウィンドウのURLを変更させるにはどうすればよいのでしょうか?

  • nikuq
  • お礼率75% (477/631)

みんなの回答

  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.2

>WEBサーバ上でのやり取りでは問題なく期待通りの動作をしてくれるのですが、子ウィンドウがローカルサーバ側という所に問題がある様なのです。 WEBサーバ側、ローカルサーバ側ってのがよくわからないのですが・・・。 もう少し詳しく構成を教えてもらえないですか? 親ウィンドウのURLはサーバにあるURL。 子ウィンドウのURLはクライアントにあるURL。 切り替えるURLはサーバ側またはクライアント側のURLってことですか?

nikuq
質問者

補足

度々のご回答、誠にありがとうございます。 説明下手で大変申し訳ありません。 親ウィンドウと子ウィンドウの関係をURLとファイル名でご説明させて頂きます。 親ウィンドウのURL: https://hogehoge.jp/test/test.php 子ウィンドウのURL http://192.168.1.1/hoge/hoge.php 1、親ウィンドウtest.phpへアクセスすると、window.openで子ウィンドウhttp://192.168.1.1/hoge/hoge.phpを開く 2、子ウィンドウhoge.phpで一連のプログラムを完了した後、親ウィンドウのtest.phpへwindow.opener.location.hrefで表示されているページを別のページに切り替える このような動作を行うと、IE7では元々開いていたhttps://hogehoge.jp/test/test.phpページのURLが切り替わりました。 しかし、IE8にしてからは、もともと開いている親ウィンドウのhttps://hogehoge.jp/test/test.phpのURLが変わらず、新たにポップアップで別のページが開き、子ウィンドウのwindow.opener.location.hrefで指定したURLのページが開いてしまうという現象です。

  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.1

通常のHTML、JavaScriptではうまくいきましたよ? 見当違いだったらごめんなさい。 a.html <html> <head> <title>aaa</title> </head> <body> <input type="button" onclick="window.open('child.html');" </body> </html> b.html <html> <head> <title>bbb</title> </head> <body></body> </html> child.html <html> <head> <title>child</title> </head> <body> <input type="button" onclick="window.opener.location.href='b.html'" </body> </html>

nikuq
質問者

補足

早速のご回答、誠にありがとうございます。 おっしゃるとおり、WEBサーバ上でのやり取りでは問題なく期待通りの動作をしてくれるのですが、子ウィンドウがローカルサーバ側という所に問題がある様なのです。 親ウィンドウはWEBサーバ、子ウィンドウがローカルサーバという環境で行った場合には、親ウィンドウがポップアップで複数表示されてしまいます。

関連するQ&A

  • IE7でのwindow.openerがnullになる

    showModalDialogで、子ウィンドウを開き、子ウィンドウからwindow.openerの関数を呼ぼうとしています。Firefoxでは、問題なく呼べるのですが、IE7ですとwindow.openerそのものがnullになってしまいます。 回避策はあるのでしょうか? IE7のバグですかね? 親 window.showModalDialog("hoge.html", this, "スタイル"); 子 var a = window.opener.hoge(); といった形で使用しています。ちなみにこの前にalert(window.opener)を入れたら、見事にnullって表示されました。

  • window.openerが設定出来ません。

    よろしくお願い致します。 親のページ(メインフレームのページ)から子ウィンドウを呼び出すことは出来るのですが、子ウィンドウから親ページを操作しようとすると、 Not Found The requested URL /test/mf_a.html/ was not found on this server. と出てしまいます。 子のスクリプトは以下の様になっています。 <!-- function aaa(){ window.opener.location.href="http://www.xxx.co.jp/test/mf_a.html/"; } function closeWin(){ if(opener.closed == false){ window.opener.close(); } window.close(); } //--> となり・・・ <img src="/test_img/shin.gif" width="150" height="53" border="0" onClick="aaa()" > を押すと親ページ(フレームのメイン)が切り替わるはずなんですが、うまくいきません。 親と子は同じ階層にいます。 どこがおかしいのでしょうか? 親が子を呼び出すときのスクリプトに問題があるのでしょうか? 教えてください。 よろしくお願い致します。

  • Firefoxでwindow.openerが動作しない

    あるHTMLから、window.openであらたなウィンドウを開いて、開いたウィンドウにあるリンクをクリックすると、そのリンクの値が元のウィンドウのテキストフォームに入力されるようにしたいのです。 IE6では正常に動いてくれますが、Firefox3で動きません。 新たなウィンドウでは以下の記述をしています。 function junp(value){ window.opener.formtest["test"].value = value; window.close(); } window.openerの行をコメントアウトすると正常にウィンドウを閉じます。 そもそもFirefoxでwindow.openerは使えないのでしょうか??

  • javascript の locationメソッド

    Javascript で、子(サブ)ウィンドを使っています 子ウィンドを開いて、とある処理を終了後に親ウィンドに指定のURLを表示させて子ウィンドを閉じる、という処理をしたいと思っています。 まず、親ウィンドにURLを渡すところはうまく動きます。 そのページはPHPで作られたページで、できており子ウィンドの処理でセッションに保存されたセッション変数を読み込んで動きます。 ページは遷移するのですが新しいセッション変数が読み込まれません。 ページをリロードすれば動作するので、子ウィンドを閉じる前に親ウィンドを再読込させればよいかな?と思ってreloadを入れてみました。 すると、リロードはしているようなのですが、今度は渡したURLに遷移しなくなってしまいました。 window.opener.location.replace(URL); window.opener.location.reload('true'); window.close(); このような処理はどうすればよろしいでしょうか? それとも諦めるしかありませんか? また、過去に同様な質問があるようでしたら、そのurlを教えていただけると幸いです。 見つけたのですが、探しきれませんでした。

  • 親Windowの印刷

    親Windowから、window.open で子Windowを開き、子Window側から親Windowを印刷しようと考えてます。 opener.print() とすべきか、 window.print(opener.location.href) とすべきか、悩んでます。 どっちもプリンターには信号が送られるようですが、肝心のプリンターが現在故障中の為、内容が確認できません(^^;) どっちが親Windowを印刷しているのでしょうか?

  • window.closeもしくはwindow.opener.closeで警告を表示させない方法

    宜しくお願い致します。 ログイン画面を作っております。 ログインフォームからID、パスワードでログインした際に、子ウィンドウを表示させます。その際に、残った親ウィンドウを子ウィンドウが開いた際に閉じたいのですが、window.closeもしくはwindow.opener.closeで閉じると警告ダイアログが表示されてしまいます。この警告ダイアログを表示させない方法はありますか?window.closeもしくはwindows.opener.closeで警告を表示させない様にする事が不可の場合、同じ動作が出来る関数はありますか?

  • openerは使えないのでしょうか?

    以下の操作をした際に親ウインドウの情報を取得できず困っています。 1.親ウインドウでサブウインドウを開く 2.サブウインドウのボタン押下で親ウインドウのlocationを変更する 3.サブウインドウから「window.opener」を使おうとすると、object自体は存在するがnameやdocumentが取得できない サブウインドウが開いている間に親ウインドウを変更するとopenerは情報を失うのでしょうか? やりたいことはサブウインドウから親ウインドウのアドレスを変更し、hiddenに値をセットしたいのですが、対応策はありますでしょうか? よろしくお願いします。

  • window.openerを使っての操作

    JavaScript初心者です。 JavaScriptのwindow.openerを使って、 子ウィンドウから親ウィンドウに値を渡す、 ということをしたいのですが、うまくできません。 実装したい環境はIE6です。。 こちらのページのサンプルにあるソースをそのまま貼り付けてみても動きませんでした。 http://shoyu-ramen23.jugem.jp/?eid=203 ただ、サンプルはこちら、と書いてあるページのものは動きます。 (実際記載されているソースとは違うのではないかと思いますが)  *ちなみにGoogleChromeでも同じ結果でした。ソース自体何か誤りがあるのでしょうか サンプルのように子ウィンドウにある選択肢を一つクリックすると その値が親ウィンドウの特定のテキストエリアに渡される ・・というものすらうまくできないのですが、 子ウィンドウでチェックボックス式の選択肢を用意して、 子ウィンドゥ側で「選択」等の決定ボタンが押されたときに、チェックが入っている選択肢の内容が カンマで区切られて親ウィンドウのテキストエリアに渡される・・・ というものを作成したいのです。  子ウィンドウチェックボックスで、りんごとみかんとバナナにチェックが入っていれば  親ウィンドウのテキストエリアには「りんご,みかん,バナナ」といったふうにです。 こういったものは作成できるものなのでしょうか。 それともJavaScriptでやるようなことではないのでしょうか。 JavaScriptでできる場合どのようにすればよいのでしょうか? せめてサンプルだけでも動かせるようにしたいです。。 他にもいろいろと試してみましたがどうにも動きません・・ よろしくお願い致します。

  • location.hrefが動かない・・・

    F5が押された場合に指定したURLに飛ばすようにしたいのですがなかなかうまくいきません・・・ ブラウザはFirefox 2.0.0.7を使用しています コードは以下の様にしております <script type="text/javascript"><!-- function key(keyCode){ if (keyCode == 116){ location.href = "http://www.google.co.jp/"; } } --></script> <body onKeyDown="key(event.keyCode)"> </body> 指定URLはGoogleにしています これ状態でF5を押してもなにも起こらず普通に更新されるだけです location.href = "http://www.google.co.jp/";の部分をdocument.write('TEST');などのようにdocumet.writeに書き換えると普通に指定した文字列が表示させます location.hrefと同様にwindow.location.hrefやlocation.replaceでも指定URLに飛ばされません documet.writeは動くのでF5が押されたかどうか判断するコードは間違っていないと思うのですが・・・ ちなみにIEでもダメでした 誰か原因がわかる方が居られましたら教えてください よろしくお願いします

  • open で開いた子WINDOWから親元のURLを文字列として取り出す方法は?

    こんばんわぁ、Blackwinglsです。 ちょっと解決しない問題があるので、相談させてください。 URL = new String() URL = window.opener.location alert(typeof(URL)) とするとalertの表示結果がobjectとして表示されてしまいます。 URL = new String(window.opener.location) alert(typeof(URL)) とするとIE5.5では URL = new String(window.opener.location) の部分がエラー表示されてしまいます。 なんとか親元のWINDOWのURLをStringとして取り出す方法はないでしょうか?

専門家に質問してみよう