開くページが全て自分の管理するサイトであるなら、JavaScriptで開いた子ウィンドウ内のHTMLも操作できますし、逆に子ウィンドウから親ウィンドウも操作できるので、恐らく可能です。
親ウインドウからサブウインドウ(子)を制御
プログラミングお役立ちメモ
参考先のブログの内容を元にします。
まず普通にウインドウを下記画像の様に2つ開きます。まぁ別プロセス化している状況ですね。左側をウインドウ1として右側をウインドウ2とします。
このウインドウ2が、ウインドウ1でwindow.open
により開いたものであるならば、制御可能です。
しかし、普通に開いた場合…つまり、ブラウザのメニューなどから「新しいウィンドウを開く」などして開いたものがウインドウ2である場合、制御は不可能です。
(と言い切ってしまうのは不安なのですが、少なくとも私は制御する方法を知りません)
ウインドウ2にHTMLページを開いて、幾つかあるリンクをクリックします。
クリックすると通常だとウインドウ2でタブで開く所を、ウインドウ1で開きます。そしてもう一度同様の動作をするとタブで開く(バックグラウンドで)ようにしたいわけです。
簡易的に検証した所、ウィンドウ2でページ移動してしまうと親ウィンドウであるウインドウ1への参照が切れてしまうようなので、window.open
によりウィンドウ2を開いた段階で該当のHTMLページを展開しているものとします。
ウィンドウ2でリンクのclickイベントを監視し、クリックされた場合に親ウィンドウ(ウィンドウ1)で新しいタブとしてリンク先のページを開きます。
親ウィンドウ(ウィンドウ1)の制御には、ウィンドウ2のJavaScriptでwindow.opener
を利用します。
プログラミングお役立ちメモ
タブの開き方は以下が参考になるかもしれません。
javascriptで新規タブ/ウィンドウを作成する時の罠 | la casa de nieve
なお、クリックなどユーザのアクションにより開始された処理以外でwindow.open
が実行された場合(例えばページ読み込み時や、一定時間ごとに実行など)、ポップアップブロックに引っかかりウィンドウ/タブが展開されません。
今回の場合、ウィンドウ1ではクリックにより開始された処理ではないので、ポップアップブロックに引っかかるかもしれません。
今は時間が無いためここで解答を終了しますが、後日、具体的なサンプルを作成し、作成可能かどうか追記させていただきます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/26 13:05