2013-10-24 24 views
11

HTAファイルで使用されているJavaScriptのバージョンを知っている人はいませんか。 HTAのJavaScriptバージョン

は現在、いくつかのスクリプトファイルを作成する - とHTAとして実行している場合 Object.defineProperty

の使用をしよう - それはエラーがこのプロパティまたはメソッドをサポートしていないオブジェクトを述べます。私はちょうどそれをチェックするためにHTMファイルとして実行しました - そして全く問題はありません。

したがって、私はmshta.exeが古いJavaScriptエンジンを使用していると仮定できます。誰でもこれを確認できますか?

答えて

14

使用されているJavaScript(またはJScript)のバージョンは、Interner Explorerのバージョン、使用されているドキュメントタイプ宣言(DTD)、x-ua-compatibleメタタグという3つの要素によって異なります。

HTAsはmshta.exeによって実行されますが、IEはJavaScriptとレンダリングエンジンをアプリケーションに提供するため、後ほどJSバージョンについて言及するものはすべてボックスモデル、位置付け、CSSなど、利用可能なAPIとHTML要素です。

システムにIE11がインストールされている場合は、<!DOCTYPE html><meta http-equiv="x-ua-compatible" content="ie=edge" />を使用して最新バージョンのJavaScriptを使用できます。

もちろん、contentIE=edgeに設定しても、インストールされているIEの古いバージョンは上書きされません。最新の使用可能なモードが使用されます。 edgeの代わりに、新しいIEで実行するときにIEバージョン番号を使用してアプリケーションをダウングレードすることができます。

DTDを省略すると、アプリがQuirksモード(常にHT5の場合はIE5に似ています)で動作するようになります。しかし、この場合、文書モードはx-ua-compatibleで変更できますが、少なくともIE8 & 9.にはいくつかの矛盾があります。Quirksモードが不要な場合は、DTDを使用するのが最も安全です。

x-ua-compatibleメタタグHTAを使用していないDTAでは、IE7標準モード(IE9で導入されたobject.defineProperty()はサポートされていません)で実行されます。

あなたはMSDNで主題についての詳細を読むことができます:JSとCSSのIntroduction to HTML Applications (HTAs)

IEのバージョン情報は、MSDNで見つけることができます:ここで

JavaScript version information

CSS Compatibility in Internet Explorer

は「安全です使用可能な最新のバージョンを使用する場合は、HTAファイルの「開始」を選択します。

<!DOCTYPE html> 
<html> 
<head> 
<title>HTA</title> 
<meta http-equiv="x-ua-compatible" content="ie=edge" /> 
// All link, style and script tags, or any code should be placed below the five lines above 

あなたはまた、最新のスクリプト・バージョンを見つけるためにScriptEngine機能を使用することができます。これはブラウザが提供する最新バージョンのみが表示されていることを、

ver = ScriptEngine() + ' V '; 
ver += ScriptEngineMajorVersion() + '.'; 
ver += ScriptEngineMinorVersion() + '.'; 
ver += ScriptEngineBuildVersion(); 
alert(ver); 

お知らせ、ドキュメントモードが返された値には影響ありません。 。

+2

メタタグを使用するたびに、私のhta:アプリケーションのプロパティは機能しません。私がそれをコメントアウトすれば、彼らはそうする。解決策はありますか? – ndm13

+2

残念ながら、私はこれに対して良い解決策ではありませんでした。IE10以降、HTAプロパティの多くはもはや適用されていないようです(解析されたコードでは 'HTA'タグが' body'に移動します)。 IE9ではまだ尊敬されているようです。私はほとんどの場合、IE = edgeの代わりに 'IE = 9'を使用しました。これは少なくとも現代的なイベント処理と' svg'と 'canvas'を含むHTML5タグのほとんどを提供します。 – Teemu

+2

'IE = 9'は完璧に動作します!私はこれがある時点で修正されたことを願っていますが、これが段階的になっているように見えるので疑問です。次のバージョンのWindowsがHTAファイルをサポートしていない場合、私は驚くことはありません。 – ndm13

関連する問題