IE9なしでIE9 JavaScriptエンジンを使用する

テストに関する私のhabratopikをきっかけに、ServerSideはIE 9の外部でMicrosoft JScript 9.0エンジンを使用する方法に関する小さな情報投稿を公開することを決定しました。

それは何が良いでしょうか? はい、少なくともHTMLのレンダリングに関係なく、JavaScriptのみのパフォーマンステストの場合。 より自動化されたテスト環境で、将来の< 独自のものを置き換える >-キラーJavaScriptライブラリをテストできます。 はい、Javascriptエンジンの最新バージョン用のhabrachitatelを作成できるアプリケーションの数はわかりません。

一般的に、興味のある方は、猫にようこそ。



まず、Windows XP以前のユーザーはがっかりするはずです。 Microsoftは、Direct2Dをサポートしていないという事実により、Windows XPでIE9を起動することは不可能であると主張しているにもかかわらず、Direct2Dについておおよそ気にならないIE9エンジンは、Windows XPでは動作しません。 Windows XPでエンジンをコンパイルすることは可能かもしれませんが、Windows VistaおよびWindows 7でのみ動作するエンジンのバージョンのみが利用可能です。

また、システムでの突発的な行為について読者に警告したいと思います。 何が行われているのか、理由がわからない場合は、理解しないことが最善です。



実際、MicrosoftのJScriptエンジンとは何ですか? これは通常、 %WinDir%\ System32 \ jscript.dllパスにあるDLLモジュールです。 このモジュールには、Microsoft Active Scripting Engine仕様に従って、COMインターフェイスのセットの実装が含まれています。つまり、IEだけでなく、Microsoft Active Scripting Host COMインターフェイスを実装するアプリケーションでも使用できます。 これらのすべてのインターフェースの実装については、技術が比較的古く、開発されているため、さまざまなプログラミング言語の例がかなりあります。 しかし、これらのインターフェイスは、Windowsの最新のデスクトップバージョンの一部であるWindows Script Hostアプリケーションに既に実装されているため、実装する必要はありません。 これらはwscript.exeおよびcscript.exeアプリケーションです。 Wscript.exeはGUIアプリケーションであり、 cscript.exeはコンソールアプリケーションです。 ただし、これらのモジュールの動作シナリオは、コマンドラインパラメーターによって異なる場合があります。

これらのオプションはすべて、Windowsコンソールを呼び出すことで表示できます



cmd



コマンドラインで入力する



wscript.exe /?



または



cscript.exe /?



システムで使用されているエンジンのバージョンを確認するには、次のコードを使用して単純なgetversion.jsファイルを作成します。

  1. WScript. Echo ( "Microsoft JScript " + ScriptEngineMajorVersion ( ) + "." + ScriptEngineMinorVersion ( ) + "." + ScriptEngineBuildVersion ( ) ) ;







コマンドを実行します:



cscript.exe getversion.js



名前から、Microsoft Active ScriptingテクノロジーがJavaScriptエンジンだけに限定されないことは明らかです。 VBScript、PHP、Perlなどの実装があります。 特定のスクリプトファイルに使用するエンジンであるWindows Script Hostは、実行のために送信されるファイルの名前の拡張子を決定します。 拡張機能には、スクリプトインタープリターのエンジンオブジェクトの特定のGUID(一意の識別子)COMが割り当てられます。 JScriptの場合、これは次のとおりです。



{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}



Windowsレジストリでこの文字列を見ると、WindowsでJScriptインタープリターとして登録されているモジュールを確認できます。 これは通常、%WinDir%\ System32 \ jscript.dllです。 ただし、このレジストリブランチを置き換えて、異なるバージョンのモジュールを登録できます。 残念ながら、JScriptのすべてのバージョンは同じGUIDを使用しているため、JScriptエンジンの複数のバージョンを同時に使用することはできません。 JavaScriptパフォーマンステストでは 、* .regファイルを使用してレジストリの変更を行い、対応するテストの前にモジュール登録を置き換え、元のエンジンを復元しました。

これはIE9エンジンの使用と何の関係がありますか? IE9はまだ正式にリリースされておらず、テストバージョンでのみ利用可能であるため、IE9インストーラーはシステム内のエンジンを置き換えないようであり、IE9はデフォルトのレジストリエントリをバイパスして独自のバージョンのエンジンを使用します。 したがって、バージョン9エンジンはWindowsスクリプトホストでは使用できません。 レジストリエントリを次のように変更することにより、インストールされているIE9のテストバージョンの状況を修正できます。



  1. [HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID \ {f414c260-6ac0-11cf-b6d1-00aa00bbbb58} \ InprocServer32]
  2. @ = "C:\\ Windows \\ System32 \\ jscript9.dll" "ThreadingModel" = "Both"




そしてやっている



cscript.exe getversion.js



新しいエンジンが現在使用中であることを確認してください。



また、IE9をインストールする必要はありません。 Microsoftのインストールパッケージから対応するライブラリを「切り取り」、JScriptエンジンとして登録するだけで十分です。

Windowsのバージョン(〜19 Mb)のインストールパッケージは、次の場所からダウンロードできます。



http://windows.microsoft.com/en-US/internet-explorer/download/ie-9/worldwide



パッケージは、Zipアーカイバによって開かれます。 7-Zipを使用しました。 その中にjscript9.dllファイルがあります-これはJScript v9.0インタープリターです。 近くにjscript.dllがあります-これはIE8 JScript v5.8インタープリターです。 なぜこのようなバージョンの飛躍も非常に興味深い質問であり、その答えは私にはわかりません。 Google V8の栄光に本当に出没しますか?

システムで新しいエンジンを継続的に使用しないでください-他のアプリケーションで問題が発生する可能性があることは明らかです。 そして、認可された清潔さでは大丈夫ではありません。 したがって、テスト後、レジストリ内の設定を元の形式に戻す価値があります。



参照:

WikiPediaのアクティブスクリプト

Microsoft Windowsスクリプトテクノロジー

Internet Explorer 9ベータ版のJavaScript

私のトピック:ServerSide JavaScriptのテスト




All Articles