本ブログの更新について

 本ブログの更新は2016年3月31日をもって終了しました.ありがとうございました.
posted by みっちぃ (管理人)

2013年10月02日

Javascriptにおけるマルチモニタ対応について

【サマリ】
  • 例えばデュアルモニタ環境などで,Javascriptによりブラウザの親画面から子画面を開いたときにセカンダリモニタ上で開きたい.
  • Firefoxでは比較的簡単に実現可能.そのほかのブラウザでは工夫が必要かも.

 Javascriptでマルチモニタに対応する方法を検証してみた.いま実装したいのは,
  • 親画面で子画面を開いたときにプライマリ以外のモニタ上で開きたい.
  • できれば,最大化した状態で子画面を開きたい.
というもの.
 マルチモニタというからには,プライマリとセカンダリの2つのMulti Monitor環境を考えるだけではなくて,3画面以上の環境や,2画面であってもセカンダリモニタが上下にあったりするような場合も想定すべきと思う.しかしながら,現時点では複数モニタの情報を取得して活用できるような仕組みをJavascriptだけで実現することはできないようだ.
 現時点において,Javascriptだけでマルチモニタにどこまで対応できるのかを検証するため簡単なJavascriptプログラムを実装してみた.上記の要件を実現することを想定して次の動作を検証した.
  • 親ウィンドウ側で子画面を作成するときに,セカンダリモニタがプライマリモニタに対して右側であるか左側であるかをユーザに選択させる.
  • Javascriptにより子画面を小さめに生成するが,その際に子画面全体がセカンダリモニタ内に収まる位置で生成されるよう,入力されたセカンダリモニタの位置に基づいて座標指定する.
  • 子画面生成後,モニタの左上座標に子画面を移動する.
  • モニタサイズいっぱいに子画面をリサイズする.
この手順をJavascriptで自動化すれば上記要件は達成できるだろうと考えた.そこで,まずは以下の検証用Javascriptプログラムを作ってみた.
「Open」で子画面を作成し,「Action1」で子画面内のスクリプトを呼びScreen情報を取得する.「Action2」で子画面の最大化を試みる.「Close」で子画面を閉じる.これらのアクションは現状では手動で行うようにJavascriptを実装したが,すべて自動で行うようにすれば上記の目的は達成できるだろう.
※iframeで埋め込んでいます.コードの確認など埋め込まれたページを別途開くにはこちら
 Windows7上で試して分かったことをまとめると次の通り.
  • Firefox(Ver.24.x)ではセカンダリモニタ側に子画面を生成できた.また,その状態で画面最大化も可能であった.セカンダリモニタに関わる情報も正しく取得できていた.
  • Chrome(Ver.30.x)ではセカンダリモニタ側に子画面を生成できなかった.生成された子画面をセカンダリモニタ側に(手動で)移動してからであれば最大化も可能であった.セカンダリ側に移動してからであればモニタに関わる情報も正しく取得できていた.
  • IE(IE10)では,セカンダリモニタがプライマリモニタの右側にある環境であれば,セカンダリモニタ側に子画面を生成できた.また,その状態で画面最大化も可能であった.ただし,セカンダリモニタに関わる情報は正確に取得できなかった.
 今回の検証用Javascriptでは,子画面生成時にセカンダリモニタ側で生成する手段を試みた.プライマリモニタ上で子画面を生成してからセカンダリモニタ側に移動(moveTo)する方法もあると思うかもしれないが,この方法では(少なくともFirefox上)ではうまくいかなかった.
 他にも良い方法があればぜひご教授を.
参考
posted by みっちぃ (管理人) at 19:15| Comment(0) | TrackBack(0) | 知恵袋
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/77166776

この記事へのトラックバック