質問者
【IE8】WinXPとWindows7でウィンドウの表示に差異が出る

質問
-
お世話になります。
IE8をWindows7とXPにて操作させてときに挙動に差が出ます。
どのような理由で差が出るのか分からず困っています。
ご存知の方、教えていただけないでしょうか。【操作内容】
①社内のローカルイントラネットにて、リンクで新規ウィンドウを開く。
ゾーン:ローカルインターネット
保護モード:無効
※リンクで開いた新規ウィンドウも上記の設定リンクで新規ウィンドウを開く際のスクリプト
<a href="XXXXX.html" target="_blank">XXXX</a>
②リンクで開いたウィンドウのアドレスバーに外部サイトのURL(googleのURLなど)を直接入力する。
ゾーン:インターネット
保護モード:有効
※【挙動】
Windows7 → 外部サイトが新規の別ウィンドウで表示される。
XP → リンクで開いたウィンドウが外部サイトに切り替わる。Internet Explorer Compatibility Test Toolを使用してログを確認したところ
Windows7では「Event 1037-Protected Mode (イベント 1037 - 保護モード)」が
出力されていました。保護モードに関係がありそうだと予想したのですが、
それ以上の具体的な内容が分かりませんでした。情報をお持ちの方、どうぞよろしくお願いいたいます。
- 編集済み どんぷり 2013年1月28日 2:32
すべての返信
-
予想されている通り、保護モードによる動作の違いでしょう。
Windows 7 で外部サイトが別ウィンドウで開くのは、次の記事が分かりやすいのではないかと思います。
内容は Windows Vista + IE7 についてのものですが、Windows 7 の IE8 でも同様です。
新しいWebページをタブで表示できないことがある:PC Online
http://pc.nikkeibp.co.jp/article/NPC/20070420/269033/
保護モード自体については、次の記事をご参照ください。
保護モードの Internet Explorer の理解と機能
http://msdn.microsoft.com/ja-jp/library/bb250462(VS.85).aspx
上の記事にもある通り、保護モードは Windows Vista 以降の整合性レベルの機能が基になっているため、Windows XP には保護モードの機能がありません。
このため、Windows XP では外部サイトが同じウィンドウで表示されたのでしょう。- 回答の候補に設定 佐伯玲 2013年1月17日 7:04
-
2008/7/2 - Internet Explorer 8 のセキュリティ : 総合的な保護
によれば、
---
パフォーマンスの向上と互換性の確保のため、Internet Explorer 8 はイントラネット ゾーンの保護モードを既定で無効にしています。Internet Explorer 7 はプロテクト モードを切り替える際に新しいウィンドウを作り、新しいプロセスを駆動する必要があったため、操作性を維持するためにイントラネットゾーンでも既定値で有効になっていました。
Internet Explorer 8 は LCIE 機能により保護モードと非保護モードのタブを同じウィンドウ内で制御することを可能としたため、ユーザーエクスペリエンス的な不快感を取り除きます。もちろん Internet Explorer 8 ではユーザーやドメインの管理者はイントラネットゾーンの保護モードの設定を必要に応じて有効化することができます。
---
その点は改善されてると読めますけど。
-
確かに IE8 ではプロセス モデルが変更されたので、IE7 みたいにブラウザー ウィンドウごと新しく開くのではなくて、タブだけが新しく開くようにはなっていますね。
2008/3/11 - IE8 と Loosely-Coupled IE (LCIE)
http://msdn.microsoft.com/ja-jp/ie/cc787974.aspx
とはいえ、保護モードの有効と無効をまたぐ (= 整合性レベルを変更する) には、プロセス起動し直すしかないので、新たにタブが開くのは避けられないですが。
外部サイトを信頼済みサイト (保護モードを無効にしとく) に入れてあげて、新たにタブが開かないようにするという回避策も考えられるのでしょうが、これには安全性を考慮する必要があると思います。 -
私の方でも確認いたしました。(サイト上にtarget="_blank"なコンテンツを作成)
環境1: Windows7 32bit & IE8
環境2: Windows7 32bit & IE9
# 双方ある程度使い込んでいます(多少設定をクリアして確認)。
ブラウザのURL欄にURLを入れてエンターを押した際に、別ウィンドウが開く事象について、
環境1では再現しますが、環境2では再現しませんでした。
環境1であっても、_blank経由で開いたウィンドウのURL欄では再現しますが、元ウィンドウのURL欄では再現しませんでした。
(ローカルイントラネットが表示されている状態で、インターネットゾーンへの移動です)
IE9では(IE8もですが)、デフォルトで整合性レベルの異なるタブプロセスを1つのタブで透過的に表示しているようです。
- 編集済み (´・ω・`) 2013年1月17日 16:36
-
環境1であっても、_blank経由で開いたウィンドウのURL欄では再現しますが、元ウィンドウのURL欄では再現しませんでした。
昔の記憶では、createobject("internetexplorer.application")で作ったieとiexplore.exeで作ったieで、保護モード越えのie.navigate()の振る舞いが異なっていて難儀しました。
前者が「_blank経由で開いたウィンドウ」、後者が「元ウィンドウ」に対応しているのでしょう。ie8ではメジャーな環境だけ先に改善され、マイナーな環境は後回しになったのでしょう。
後者では、別プロセスのieインスタンスにie.HWNDを引き継ぐ。
- 編集済み ウィンドウズスクリプトプログラマ 2013年1月24日 5:42