documentModeが9にならない?

下のソースコードは一般的なHTMLコードで、これをIE9で表示するとドキュメントモードは「IE9」(9)になります。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
<p>hoge</p>
</body>
</html>

IE9用に書いたものなので当たり前の動作なのですが、これをVBSで下記のように書くと何故かドキュメントモードが「8」になってしまいます。
(DOCTYPEやX-UA-Compatibleが色々書かれているのは色々試した結果。どれも「9」にならず・・・)

Option Explicit

Dim s

'DOCTYPE
s = "<!DOCTYPE html>" & vbCrLf
's = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0//EN"">" & vbCrLf
's = "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.1//EN"" ""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"">" & vbCrLf

s = s & "<html>" & vbCrLf
s = s & "<head>" & vbCrLf
s = s & "<meta charset=""UTF-8"">" & vbCrLf

'X-UA-Compatible
s = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=edge"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=100"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=IE9"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=EmulateIE9"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=9; IE=8; IE=5"">" & vbCrLf

s = s & "</head>" & vbCrLf
s = s & "<body>" & vbCrLf
s = s & "<p>hoge</p>" & vbCrLf
s = s & "</body>" & vbCrLf
s = s & "</html>" & vbCrLf

With CreateObject("htmlfile")
  .clear
  .open
  .write s
  .close
  
  MsgBox "userAgent:" & .parentWindow.clientInformation.userAgent & vbCrLf & _
         "documentMode:" & .documentMode
End With

下位のドキュメントモードには設定できるのですが、う~ん・・・。謎です。
他に設定しないといけないところがあるのかなぁ・・・(?_?)

2件のフィードバック to “documentModeが9にならない?”

  1. hebikuzure Says:

    この VBS はサーバー サイドで実行されるんですよね。
    F12開発者ツールの [ネットワーク] で HTTP キャプチャして適切なヘッダーやボディが返っているか確認してみると良いかもしれません。

  2. kinuasa Says:

    > hebikuzureさん

    コメントありがとうございます。
    スクリプトはローカルのものです。

    記事の上部にあるHTMLソースをローカルで開くとドキュメントモードは9になるので問題はないのですが、HTMLDocumentオブジェクトでwriteすると9にならずに8になってしまう状態です(X-UA-Compatibleを変更すると下位の7や5にはなるのですが…)。
    VBSやVBAでHTML5のAudioエレメント等を使いたかったので試してみたのですが、結果的には上手くいかず。
    IEオブジェクト経由でページを開いて操作をすれば良いのですが、そうなると実行が重くなってしまうので、結局断念した次第です(^^;

コメントを残す