2015年8月13日 (木)

Internet Explorer の互換モードと SharePoint についての注意点

Internet Explorer (以下、IE) には互換モードがあります。たとえば、IE 11 を使っていた場合でも、そのページを開く場合は IE9 と同等の機能で表示するといったことが可能です。

どの互換モードを使うかは、Webサーバー側でサイト単位で設定したり、Webページに meta 要素を追加したり、HTTPヘッダーを指定したりすることで決まります。場合によっては 組織内のシステム管理者側で設定するグループポリシーの影響も受けます(参考:Group Policy and compatibility with Internet Explorer 11)。

SharePoint の場合は、マスターページに設定される meta 要素が影響します。meta 要素は次のような記述です(IE9対応モード指定の例)。

<meta http-equiv="X-UA-Compatible" content="IE=9">

この記述はオンプレミスと Office 365 (SharePoint Online)とで違いがあります。さらに既定のマスターページによっても違いがあります。なお、以下に記述する内容は今後更新される可能性が高いため 2015年8月現在の状況として記載しておくことに留意してください。

[オンプレミスの SharePoint 2013 SP1 以降の状況]

オンプレミスの SharePoint Server 2013 が持つ既定のマスターページは seattle.master と oslo.master です。まず、seattle.master を見てみると下記の通り IE10 との互換性を確保するように指定されていることがわかります。

2015-08-13 10-01-26

同じく Oslo.master も確認してみると、seattle.master と同様に IE=10 となっています。

2015-08-13 10-03-42

結論としては、いずれのマスターページを使用していても IE10がターゲットになっているということです。

[Office 365 (SharePoint Online)]

続いてクラウド環境である Office 365 ではどうでしょうか? ちょっと様相が変わります。まず、seattle.master を見てみましょう。meta タグでの指定が見当たらず、その代り次の SharePoint サーバーコントロール (SharePont:IECompatibleMetaTag)が定義されています(ちなみに、このサーバーコントロールについて調べてみたのですが、現時点では何の情報も公開されおりませんので、結果から推測する挙動を推測するしかありません)。

2015-08-13 10-05-01
このマスターページを使っている SharePoint サイトのページをレンダリングしたところ、今のところ生成されたソースは以下の通り IE10 互換になっています。Oslo.master についても同様です。

2015-08-13 10-12-25

ところで、SharePoint 2013 からは HTML マスターページという新しい機能が追加されています。この機能は、発行サイトもしくは 「SharePoint Server 発行」フィーチャーをアクティブ化すると利用できます。この機能により、master ページではなく、これに関連づく HTMLファイルを使ってデザイン変更を行えるようにするというもので、これによって SharePoint Designer がなくとも、メモ帳や Dreamweaver などでも編集が手軽にできるようになったわけです。HTML側を編集すると、これに合わせて master ページを自動生成してくれるという仕組みです。

さて、この HTMLマスターページの側を確認すると、実は IE9 互換モードになっています。

2015-08-13 10-34-14

さて、挙動を確認してみましょう。HTMLマスターページ既定の seattle.master および oslo.master のいずれを指定しても、レンダリング時には既定では IE10 モードになるようです。

しかし、seattle.html もしくは oslo.html をコピーして作成した独自のマスターページを適用するとどうでしょうか。下記のように IE9 と IE10 の両方の互換モードが追加されてしまいます。結果として IE9 互換モードに引きずられます。そのため、IEに関しては、CSS3 のほとんどが利用できなくなってしまいます。

2015-08-13 10-36-39

※IE9互換モードにならないようにするには、このタグを削除してしまいたいところですが、このタグを削除すると対応する *.master が壊れてしまうというトラブルに見舞われました。SharePont:IECompatibleMetaTag サーバーコントロールが関係していそうですが、このトラブル対応は修正が厄介であるため、最善策としては削除ではなく、meta要素の属性を IE=10 や IE=Edge に変更するなどといった対応を行った方がよいようです。

[結論]

マスターページのカスタマイズは、もともと高度なものであり、極力行わずにできるだけ CSS のみで対応していきたいところですが、フッターを追加したりしたい場合は、どうしても若干の変更は必要です。また、全社向けの情報発信ポータルサイトでは見栄えが重視されるため、局所的にはカスタム作成のマスターページを使うことになります。この時、上記のような挙動を意識しておかないと、HTML5 や CSS3 対応にしていく際に、予想した結果とならないことになります。十分にご注意ください。

[参考]

Course-Banner-SiteBranding

コメント