2015/07/31 この記事書いてから一年以上経過しましたが、問題なくシステムは動作しています。ただ、最近は『互換表示設定』によって自動的にうまく行く方向ですが、いくつかバリエーションがあるので、それは記事最後に記述します 追記(2017/03/16) VBScript の スクリプト要素の置く位置で、VBScript をデフォルトにできるのは、<meta http-equiv="x-ua-compatible" content="IE=8"> までです(かつ互換表示設定で動いています)。IE=9、IE=10 ではデフォルトにできないです。IE9 以降のテクノロジを使うには、いっその事、VBScript 関連のオブジェクト処理を JavaScript で書くか、実行単位で language="VBScript" を書くかの選択になると思います。(ウチでは当分 IE8 で運用予定ですが) ※ さらに、自分の環境では開発者ツール開いてると何故かデフォルトにできないのが現状です【2014年03月07日】 XP から Windows7 への移行がいずれ余儀なくされます。今、実際に移行作業中なのですが、元々は10年前に作成していたので、ここに書いて無い事以外にも注意事項がたくさんあります( 極端なのは document.all だったり、css の単位無し定義だったり )しかし、IE11 はなにもしなければ、VBScript が動かなくなるので、Excel と連携するようなアプリが壊滅してしまいます。その際のテコ入れ時に知っておいたほうが幸せになれる内容です。 まず、以下のコードは JavaScript が IE のデフォルトのスクリプトなので、IE8 でもエラーになります。
<html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <input type="button" value="実行" onclick='call alert("OK")'> </body> </html>
これは基本的な事ではありますが、IE のデフォルトのスクリプトを変更する方法がある事を知る為の事実の前振りでもあります。 最初は、この INPUT だけを IE11 でVBSCript 扱いするには以下のように記述します。
<html> <head> <meta http-equiv="X-UA-Compatible" content="IE=8"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <input type="button" value="実行" onclick='call alert("OK")' language="VBScript"> </body> </html>
これは通常の Microsoft のドキュメントでも書かれていますが、これではデフォルトにはなりません。そこで、以下のようにして VBScript を IE のデフォルトスクリプトに変更します
<html> <head> <meta http-equiv="X-UA-Compatible" content="IE=8"> <script language="VBScript"></script> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <input type="button" value="実行" onclick='call alert("OK")'> <input type="button" value="実行" onclick='alert("OK");'> </body> </html>
※ 11 行目はセミコロンがあるのでエラーになります
つまり、ページの最初に認識されるスクリプト要素が VBScript であれば、デフォルトが VBScript に変更されます。但し、X-UA-Compatible と両方書く場合は、X-UA-Compatible のほうが先でなければなりません。以下のコードは、IE8 のドキュメントモードに変更されずに、IE11 となり、そもそも VBScript が動作しません。
<html> <head> <script language="VBScript"></script> <meta http-equiv="X-UA-Compatible" content="IE=8"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <input type="button" value="実行" onclick='call alert("OK")'> <input type="button" value="実行" onclick='alert("OK");'> </body> </html>
META 要素による、X-UA-Compatible の設定は、それより前に IE の判断の邪魔になるようなものがあると、設定しない動作になるので、X-UA-Compatible はできるだけ先頭にする必要があります。これは、VBScript 以外の対応においてもきちんと対応すべき重要な仕様です。 ※ これに関して、Microsoft の開発者ツール(F12)のドキュメントに説明があります【HTML1115】 一般に、"META" タグが "Script" または "Style" 宣言の後に置かれ、それによりページのドキュメント モードが修正されたことを表します。 X-UA-Compatible META タグをヘッダー内のできるだけ前の位置に移動します。"<title>" と charset の値の直後に配置することをお勧めします。さらに、Quirks モード( 互換モード / IE6 の時代の過去の互換なので、正確には IE5 ) は、IE5 と指定すると設定されるようです。
<meta http-equiv="X-UA-Compatible" content="IE=5">
『互換表示設定』について IEの、右上の歯車アイコンで開くメニューの中に、『互換表示設定』という項目がありますが、これは意図的にある条件にあてはまるページを IE8 より前のIE 互換で表示するものですが、その条件が大きく分けて2通りあります。 1) 登録したサイト 2) イントラネット これによって自動的に古い IE とコンパチブルになるようになっていて、しかもこれで運用したほうがサーバーに渡されるユーザーエージェント文字が完全であるという事を最近確かめました。 そして、HTML の書かれ方によって、コンパチブルになるIE のバージョンが2段階になる事も今回確認しました。 ( 他のパターンは未確認です ) 1) <!DOCTYPE html> が書かれていると IE7 互換になる 2) 何も無い <html> 始まりだと、IE5(Quirks モード) 互換になる いずれにしても、VBScript は昔どおり動作しますので、イントラネットで運用されていた旧システムは何もしなくてもほぼ動く事になっています。( 一年前は違ったはずですが・・・ ) 関連する記事 IE11 でVBScript が動作しないので、x-ua-compatible を使用して Excel(Excel.Application) の処理を検証
|
【IEの最新記事】
- IE11 を アプリケーションのプラットホームとして使う為の3つの設定
- IE11 : 実行済みのページのソースをクリップボードにコピーする
- VBScript : IE11のソースエディタの変更
- IE11 で VBScript のクラスを使用して Excel(Excel.Application) の処理を検証
- IE 専用 : 「信頼済みサイト」でのみ行う、WEBページのデータの Excel への転送
- VBScript のコードを書いた HTML を IEのツールメニューにアドオンする
- IE11 から VBScript で ODBCで使用されるデータベース(例えばSQLServer) より Excel でデータをエクスポートする
- IE11 で『安全だとマークされていないActiveX』を使用可能にして実行可能な Windows 処理のサンプル
- IE11 でドキュメントモードを変更して IE8 として VBscript から jQuery にアクセスする
- IEによる JavaScriptのセキュリティ上の制限とその解除
- IEの設定 : 信頼済みサイトに移動する時にダイアログを表示しないようにする
- IE8 までは、ブロック要素でなくても『page-break-after』は動作してました。というか、正式ドキュメントにそう書いてあります。
- IE11 : 画像のフルスクリーン API
- Windows7 用の IE11 がリリースされて、めでたく『WebGL』が使えるようになりました。
- HTTP ヘッダや META 要素に指定する、X-UA-Compatible による IEのドキュメントモードの変更
- IE 専用 : 「信頼済みサイト」でのみ行う、InternetExplorer.Application オブジェクト
- IE9 では動かない WEBアプリケーションの為に、IE8 のドキュメントモードで強制的に動かす為の META 記述
- IEのセキュリティゾーン関連のレジストリエントリ