下のソースコードは一般的な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
下位のドキュメントモードには設定できるのですが、う~ん・・・。謎です。
他に設定しないといけないところがあるのかなぁ・・・(?_?)
2011/06/19 7:45 pm |
この VBS はサーバー サイドで実行されるんですよね。
F12開発者ツールの [ネットワーク] で HTTP キャプチャして適切なヘッダーやボディが返っているか確認してみると良いかもしれません。
2011/06/20 10:44 am |
> hebikuzureさん
コメントありがとうございます。
スクリプトはローカルのものです。
記事の上部にあるHTMLソースをローカルで開くとドキュメントモードは9になるので問題はないのですが、HTMLDocumentオブジェクトでwriteすると9にならずに8になってしまう状態です(X-UA-Compatibleを変更すると下位の7や5にはなるのですが…)。
VBSやVBAでHTML5のAudioエレメント等を使いたかったので試してみたのですが、結果的には上手くいかず。
IEオブジェクト経由でページを開いて操作をすれば良いのですが、そうなると実行が重くなってしまうので、結局断念した次第です(^^;