• ベストアンサー

javascriptで開いたウィンドウに値を渡す

javascriptでボタンを押した時に別ページのウィンドウが開き、その開いたページのテキストフィールドに 任意の値を渡したいのですがうまくいきません。 逆に、新しいウィンドウを開いてそのページから親ウィンドウに値を渡す事はできました。 http://ausdruck.flier.jp/test/window/oya.html これの反対バージョンはつくれないでしょうか?御存知の方ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>Firefoxでもできる方法があれば嬉しいです。  前回答では、検証等をちょっと端折ったので気付きませんでしたが function hoge() {field.value=window.opener.field.value;} という記述が略式の書き方なので、問題があったようです、推奨形では getElementById メソッド で エレメント を指定すべきでしたか。。。  pc_web さんご自身が sub.html の中に書いていらっしゃる set() 関数の記述 window.opener.document.getElementById("field").value = document.getElementById("field").value が OK です。  これをそのまま左辺・右辺を入れ替えて function hoge() {document.getElementById("field").value = window.opener.document.getElementById("field").value;} とすれば、Mozilla Firefox も【双方向 OK】となりました。 ●IEだと動くけど、Chromeだと動かない、javascript http://ameblo.jp/goodbath/entry-10769162976.html によると、Google Chrome の場合は、 >自分のパソコン上で動作チェックをする場合は、IEじゃないと上手く動かないみたいです。 >たとえば、URLが『file:///C:/~~~~』となっている場合は、chromeでは動きません。 >サーバーにアップしないと動かないようです。 とのことですので、上記の1点を訂正すれば、Google Chrome でも動いて、全て【双方向 OK】になるかと存じます。

pc_web
質問者

お礼

ありがとうございました!検証したところどちらも大丈夫でした。 他にもいろいろ応用できそうです。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 ローカル に置いた html で試しましたが、下記のようなことになりました。 1)sub.html の <script> に function hoge() {field.value=window.opener.field.value;} などのような関数を書きます。 2)sub.html の「<body>」を「<body onload="hoge()">」に変えます。 3)oya.html の [field] に文字列を書いて、[open] ボタン を クリック したときに、開かれた sub.html の [field] に、その文字列が入ります。 【双方向 OK】Internet Explorer、Lunascape、Opera、Safari、Sleipnir 【双方向 NG】Google Chrome 【子から親のみOK】Mozilla Firefox  WEB上では テスト しておりません。また、クロスドメイン は NG だと思います。

pc_web
質問者

お礼

ありがとうございます、Safariで確認したところできました。 Firefoxでもできる方法があれば嬉しいです。

関連するQ&A