WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScriptで、別のウィンドウを操作する方法

0:[投稿] RKT [2005/02/17 18:53 ][環境:IE5、Win2000 わからない]

JavaScriptで、親ウィンドウから子ウィンドウを開き、双方に操作することはよく知られていると思いますが、
ウィンドウを別々に開いて、双方に操作する方法って無いでしょうか?
考えている手順は、以下の通りです。

-----
(前提条件)
・ページAには、テキストボックスとボタンを配置。
・ページBには、テキストボックスを配置。
・ブラウザは、IE5以上。(NNもできたら良いけど、とりあえず)

(操作手順)
1.ブラウザを開いて、ページAを表示する。
2.ブラウザを別に開いて、ページBを表示する。
 →ページAと、ページBの2つが立ち上がっている状態
3.ページA内のテキストボックスに、"ABC"と入力し、ボタンを押下する。

(3を実行した時にやりたいこと)
A.ページBが開いているかを探す。
 →開いていなければ、ここで終了
B.ページB内のテキストボックスに、ページAで入力された、"ABC"を表示する。
-----

やれるかどうか自体もよくわからないので、知っている方がいらっしゃいましたら、ご教授ください。
よろしくお願いいたします。


1:[回答] 薫 [2005/02/17 19:23 ]

> やれるかどうか自体もよくわからないので
では、まずやってみてはどうでしょうか。
実際に作ってみて、期待通りの動作をしなかったら、
疑問点をまた書き込んでみるとよいと思います。


2:[回答] RKT [2005/02/17 19:56 ]

いや、何かしら試してみたのですが、まず別のブラウザを認識できるのか・・・と言うことに辿り着きまして。。。


3:[回答] 敬 [MAIL] [URL] [2005/02/17 22:08 ]

「何かしら試してみた」内容を書いてみましょう。


4:[回答] RKT [2005/02/18 16:29 ]

まず、子ウィンドウを開くには、

window.open("sub.html", "sub");

で、そこから親ウィンドウに配置したテキストボックスに値を入れるには、

window.opener.home.txt.value = "テスト";
(home = フォーム名、txt = テキストボックス名)

のような感じで値が入りますよね。
window.openerは、たぶん「自分の呼び元(そのまま?)」だと思いますから、
上記の0番の例ならば、ページA上でwindow.openerの部分にページBのウィンドウ名を指定して、

pageb.home.txt.value = "テスト";
(pageb = ページBのウィンドウ名)

にしてできないかと考えました。
ただ、ページAにとって、pagebとは何なのかがわかるはずもなく、案の定できませんでした。
この他、windowを頭につける等試してみましたが、結果は同じでした。

次に、ブラウザ上の要素を使用して判断できないかと考えました。
例えば、デスクトップ上に開かれているウィンドウのタイトルバーのタイトル名を取得できないか・・・です。

ただ、ブラウザが開かれている他のウィンドウの情報を取得できることは、セキュリティ上できないのかな?と思い、「やれるかどうか自体もよくわからないので」と言う0番での発言になりました。

当方、JavaScriptに関して初心者なので、ご教授よろしくお願いいたします。


5:[回答] sim [2005/02/20 13:50 ]

任意でWindow.nameを作成してやればいいのではないでしょうか?

window.open("./index.html","windowname");
<a href="./index.html" target="windowname"></a>
prent.windowname.location.href="index.html";

などなど。
parent.windowname.txt.value="テスト";
は出来ると思いますよ。


6:[回答] Dove [2005/02/20 21:54 ]

 var subWin = open('sub.html', 'sub');
 subWin.document.forms['home'].elements['txt'].value = 'テスト';

でも良いかと。


7:[回答] RKT [2005/02/21 10:39 ]

ご回答頂きながら、誠に恐縮なのですが、simさん、Doveさんのおっしゃっているのは、たぶん親ウィンドウ、子ウィンドウ(またはフレーム)の関係がある場合の例ですよね?
今回の例の場合、ページAとページBは全く別々に開かれたウィンドウです。
奥深くまで辿って行くと、どこかで繋がりがあるかもしれませんが、ページAがページBから開かれたとか、決まったページからページAとページBが開かれたと言う訳ではありません。
あくまで無関係である2つのページを関連付けたいのです。
そんなやり方、ありませんか?


8:[完了] RKT [2005/02/21 14:49 ]

解決したので報告いたします。

ページA側に、
w = window.open("", "pageb");
の1行さえ入れておけば、解決していた問題でした。。。

ページB側で、

window.name = "pageb";

と設定し、
ページAからは、

w = window.open("", "pageb");
w.document.home.txt.value = "テスト";
(home = フォーム名、txt = テキストボックス名)

としてあげたら、値を別ウィンドウに入れてあげることができました。
window.open は、ウィンドウを開くためだけのものだと、思ってしまっていたのですが、pagebのウィンドウ名を持つウィンドウがあれば、そのオブジェクトを返してくれるのですね。
4番で回答した時に、「ページAにとって、pagebとは何なのかがわかるはずもなく・・・」と書きましたが、その方法が window.open でした。。。

simさんとDoveさんはそのことをおっしゃっていたのかもしれませんが、私の理解力不足で申し訳ありませんでした。
皆様、ご教授ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World