ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

JavaScriptで、子ウィンドウから親ウィンドウをリドローしたい

2007-10-23 23:02:22 | JavaとWeb

 JavaScriptでwindow.open("URL","_blank");等によって、子ウィンドウを開いたあとに、
 子ウィンドウから親ウィンドウをリドローしたいときがある
(ないしは、親ウィンドウをほかの画面に遷移させたいことがある)。

 このときは、子ウィンドウから、
   window.opener.open("リドローあるいは開きたい画面のURL","_self");
 で親ウィンドウはリドロー、あるいは開きたい画面が開く・・

 ・・めでたしめでたし・・




 ・・・と、いかないことがある。

 親ウィンドウでも編集を行っていたり、複数の子ウィンドウをだし、それぞれの画面で編集していた場合、ある一つの子画面から、window.opener.openを発行してしまうと、そのときまでに、編集した親ウィンドウあるいは、発行者以外の子ウィンドウの編集内容が反映されないからだ。

 これを反映したい場合、どうするか?

 実は、リドローや別画面を出すには、もう一つ方法がある。

(1)親ウィンドウにFormタグを、nameをちゃんと指定して書く
   →親ウィンドウをリドローするとき、POSTやGETの引数で値を渡したければ、
    そのForm内に、inputタグのtype=hiddenで、値を書く。
    親ウィンドウの編集内容を渡したければ、そのフォーム内でinputタグの
    type=textなどで、値がわたるようにする

(2)子ウィンドウから、リドローしたいときに、
    window.opener.document.(1)のFormタグの名前.submit();
   を実行する。

 この場合、子ウィンドウの編集結果を、POSTやGETで渡したければ、渡したい引数を、あらかじめ、(1)のForm内にinputタグのhiddenで指定しておき(2)のsubmitをする前に
  window.opener.document.(1)のFormタグ名.(1)のhiddenの指定変数名.value=設定値
 で設定値が設定されて、POSTなりGETなりで、値がわたる。

 複数の子ウィンドウがある場合、値がチェンジされたとき(onChange)ごとに、値を親ウィンドウの上記(hiddenの)変数にセットすればOK




 って、よくわかんないと思うので、今度例をあげて説明したいと思います。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 既存のHTMLの途中に(画面を... | トップ | HTMLのAタグ(アンカータグ)... »
最新の画像もっと見る

JavaとWeb」カテゴリの最新記事