Hatena::Groupsubtech

ういはるかぜの化学

Saturday, December 07, 2013

Internet Explorerの互換表示リスト 2013 23:58 Internet Explorerの互換表示リスト 2013 - ういはるかぜの化学 を含むブックマーク はてなブックマーク - Internet Explorerの互換表示リスト 2013 - ういはるかぜの化学

このエントリーはInternet Explorer Advent Calendar 2013の7日目です。7日目です。

IEには8以降で互換表示(IE7モードやIE8モード、IE9モードなど)があり、アクセスしたサイトで自動的に発動できるよう対象ドメインをリスト化したXMLがあります(コピペ。

2年ちょっと前にInternet Explorerの互換表示リスト - ういはるかぜの化学 - subtechというエントリを書いてて、そのころはWindows 8がDeveloper PreviewだったのでInternet Explorer 10もまだPreviewでした。ということで2013年12月というかInternet Explorer 11での互換表示リストを見て、何となく内容を想像してみることにします。

Internet Explorer 11の互換表示リストの固定のURLは見当たらなかったのでレジストリのHKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulationからURLを拾ってきました。

https://iecvlist.microsoft.com/IE11/1375395130872/iecompatviewlist.xml

<?xml version="1.0" encoding="utf-8" ?>
<iecompatlistdescription>
    <version>1152921505002015225</version>
    <ttl>1</ttl>
    <ua id="Chrome 19">Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5</ua>
    <ua id="Chrome 28">Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36</ua>
    <ua id="FireFox 12">Mozilla/5.0 (Windows NT 6.2; rv:12.0) Gecko/20100101 Firefox/12.0</ua>
    <ua id="FireFox Token">Mozilla/5.0 ($PLATFORM; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/12.0</ua>
    <ua id="FireFox 22 Token">Mozilla/5.0 ($PLATFORM; Trident/7.0; rv:11.0) like Gecko/20100101 Firefox/22.0</ua>
    <ua id="IE 10">Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)</ua>
    <ua id="IE9Win7">Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)</ua>
    <ua id="IE10 Trident 7.0 Token">Mozilla/5.0 (compatible; MSIE 10.0; $PLATFORM; Trident/7.0)</ua>
    <ua id="IE10 Trident 6.0 Token">Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)</ua>
    <ua id="IE11">Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko</ua>
    <f12ua category="desktop" name="Internet Explorer 10">Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)</f12ua>
    <f12ua category="desktop" name="Internet Explorer 9">Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)</f12ua>
    <f12ua category="desktop" name="Internet Explorer 8">Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)</f12ua>
    <f12ua category="desktop" name="Internet Explorer 7">Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)</f12ua>
    <f12ua category="desktop" name="Internet Explorer 6">Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</f12ua>
    <f12ua category="non-desktop" name="IE10 - Windows Phone 8">Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch)</f12ua>
    <f12ua category="non-desktop" name="IE9 - Windows Phone 7">Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)</f12ua>
    <f12ua category="non-desktop" name="IE - Xbox One">Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Xbox; Xbox One)</f12ua>
    <f12ua category="non-desktop" name="IE - Xbox 360">Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)</f12ua>
    <f12ua category="other" name="Google Chrome">Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36</f12ua>
    <f12ua category="other" name="Mozilla Firefox">Mozilla/5.0 (Windows NT 6.2; rv:12.0) Gecko/20100101 Firefox/23.0</f12ua>
    <f12ua category="other" name="Opera">Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 OPR/15.0.1147.153</f12ua>
    <f12ua category="other" name="Apple Safari (iPad)">Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25</f12ua>
    <f12ua category="other" name="Bing Bot">Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)</f12ua>
    <domain docMode="EmulateIE7" versionVector="7" uaString="7" featureSwitch="overrideXUACompatible:false">example.com</domain>
    <domain docMode="EmulateIE7" versionVector="7" uaString="7" featureSwitch="requiresActiveX:true">example.com</domain>
    <domain docMode="IE9">example.com</domain>
    <domain featureSwitch="createElementWithMarkup:false">example.com</domain>
    <domain uaString="Firefox Token">example.com</domain>
    <domain>example.com
        <path docMode="EmulateIE10" versionVector="10" uaString="IE 10">/p</path>
    </domain>
    <domain>example.com
        <path uaString="IE 10">/Bugs</path>
    </domain>
    <domain>example.com</domain>
    <gpu vendorId="0x8086" deviceId="0x0046" startMatchInclusive="8.15.0010.2104" endMatchExclusive="8.15.0010.2142" umdFilename="igd10umd64.dll" />
    <gpu vendorId="0x8086" deviceId="0x2E93" startMatchInclusive="8.15.10.2202" endMatchExclusive="8.15.10.2203" Os="OS_Vista" />
    <gpu vendorId="0x8086" deviceId="0xA011" startMatchInclusive="8.14.10.1929" endMatchExclusive="8.14.10.2230" />
    <gpu vendorId="0x8086" deviceId="0xA011" subSysId="0x83ac1043" startMatchInclusive="8.14.10.2230" endMatchExclusive="8.14.10.2231" />
    <RequiresActiveX>
        <domain>example.com</domain>
    </RequiresActiveX>
    <GDITextMetrics>
        <domain exclude="true">example.com
            <path>/path/to/page</path>
        </domain>
    </GDITextMetrics>
    <NoFlash>
        <domain>example.com
            <platform>arm</platform>
        </domain>
        <domain>example.com</domain>
    </NoFlash>
    <BFCache>
        <domain>example.com</domain>
    </BFCache>
    <EnableUTF8QS>
        <domain>example.com</domain>
    </EnableUTF8QS>
    <NoPrerender>
    </NoPrerender>
    <EPMCompatMode>
        <domain>example.com</domain>
    </EPMCompatMode>
    <DisableEPMNotification>
        <domain>www.example.com</domain>
    </DisableEPMNotification>
</iecompatlistdescription>

おお…Internet Explorer 9のころからすごい変わってますね。基本的にはiecompatlistdescription要素の下にいろいろ並んでいる形になっています。

<ua id="IE 10">Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)</ua>

ua要素は下のほうで定義されている、このドメインではどのUser-Agentを装ってアクセスするかというもので使われるUser-Agentの定義です。Chrome 19とかFirefox 22とかありますね。

と思ったのですけど実際アクセスするとUser-Agentも変わっておらず使われている雰囲気がないので謎です。

<f12ua category="desktop" name="Internet Explorer 10">Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)</f12ua>

f12ua要素はF12開発者ツールでテスト用に偽装するためのUser-Agentのリストです。

category属性は desktop, non-desktop, other という値をとるようですがなんに使われているのか謎です(プロファイルが変わるわけではないみたい)。

ちなみにIE - Xbox Oneというのがありますね。Internet Explorer 10相当だということが見て取れます。

<domain docMode="EmulateIE7" versionVector="7" uaString="7" featureSwitch="overrideXUACompatible:false">example.com</domain>

domain要素でfeatureSwitch="overrideXUACompatible:false"というのがあるパターン。

overrideXUACompatible:falseというのが新しいです。みる感じこれはX-UA-Compatibleを無視するための指定のような気がします(あるいは逆かもしれない…)。

gpu要素

gpu要素はどうも互換性のないディスプレイドライバの列挙のような感じです。

その中にはベンダーID、バージョン(範囲)からファイル名といったものが指定されています。

<gpu vendorId="0x8086" deviceId="0x0046" startMatchInclusive="8.15.0010.2104" endMatchExclusive="8.15.0010.2142" umdFilename="igd10umd64.dll" />
    <gpu vendorId="0x8086" deviceId="0x2E93" startMatchInclusive="8.15.10.2202" endMatchExclusive="8.15.10.2203" Os="OS_Vista" />

GDITextMetrics要素

GDITextMetrics要素はたぶんInternet Explorer 9からのDirectWriteのテキストメトリクスGDI互換に戻す指定だと思われます。

NoFlash要素

NoFlash要素はFlashを動作させないようにする指定のようです。特にdomain要素にplatform要素があり、armと指定されていることからARMデバイスでFlashを動かしたくないというようなものがあるようです。

BFCache要素

BFCache要素は多分ですがBack Forward Cache、つまり戻るキャッシュの制御だと思われます。

戻るキャッシュというのはページで戻るボタンを押してもJavaScriptの状態が保持されていたりするアレです。それを無効にする(のか有効にするのか…)ための要素だと思われます。

EnableUTF8QS要素

EnableUTF8QS要素はEnable UTF-8 Query Stringの略で、多分クエリストリングをUTF-8にするかどうかの指定だと思います。が、これもまたここに指定があると有効なのか無効なのかは謎です。

NoPrerender要素

NoPrerender要素はプリレンダリングを無効にする指定のようです。つまりprerenderの対象として指定されているドメインのURLがあってもプリレンダリングしない、ということのような気がします。

EPMCompatMode要素

EPMCompatMode要素はEnhanced Protected Modeの互換モードってことのようですがよくわかりません。が、まあきっとEPM有効だと何か動かないサイトに対する指定だということは予想がつきます。

DisableEPMNotification要素

DisableEPMNotification要素はEPMの通知を無効にするってことでしょうか…割と謎です。しかもこれ、www.windowsphone.comしか指定がないという。

まとめ

互換表示リストもバージョンを負うことにだんだん複雑というか項目が増えてきてなかなか味わい深いですね。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20131207