公開日: 2008年12月12日(Fri)
IE7のJavaScriptに関するメモ。
マイクロソフト社公式の『開発者向けタブ ブラウズ機能』というドキュメントによると、IE7では、タブが複数開いているときに、windowオブジェクトの幾つかのメソッドで振る舞いが変わるそうだ。
一部を抜粋してコピペする。
たとえば、タブが 1 つだけ開かれているとき、またはユーザーがタブ ブラウズ機能を無効にしているときは、いくつかの window メソッドでブラウザ ウィンドウのサイズ、位置、および外観に影響を与えることができます。 しかし、複数のタブが開かれているときは、これらのメソッドは効果がありません。 このようなメソッドには、サイズ変更、移動など、ブラウザ ウインドウの外観を変更するメソッドがあります。・・・
他にも、非アクティブなタブ上で実行された場合に無視されるメソッドなどが幾つかあるようだが、非アクティブなタブでウィンドウをコントロールするような実装はほとんど見ないので、影響を実感する機会は滅多にないかも知れない。しかし、ウィンドウの位置やサイズを変更するような動作は、フルFlashのコンテンツなどでよく見かける。こういうサイトは、タブが複数開かれたウィンドウ上で実行されないようにするか、それでも問題が起きないようにするか、なんらかの配慮が必要だということだろう。
実際やってみた。
今回試しているのは、window.resizeTo() と window.moveTo()。確かにタブが2つ以上あるウィンドウでは動作が異なることが確認できた。タブがひとつの場合は動作するが、2つ以上タブを開いた状態では、無視されている。
ちなみに、上記のサンプルを他のブラウザでテストすると、Safari3 と Firefox3 はタブの数に関わらず動作した。Chrome1.0.154.36 は、タブの数に関わらず完全に無視。Opera9.6では、ウィンドウが最大化されているときは完全に無視、そうでなければ、タブの数に関わらず動作した。
公開日: 2008年12月12日(Fri)