使用.NET,我可以编写一个托管脚本引擎的应用程序,该脚本引擎符合Microsoft的IActiveScript约定.这包括来自Microsoft的JScript和VBScript,以及PerlScript和RubyScript,我不知道第三方还有什么.
在代码中执行此操作的方法是这样的:
Type engine = Type.GetTypeFromProgID(progId, true);
_engine = Activator.CreateInstance(engine) as IActiveScript;
Run Code Online (Sandbox Code Playgroud)
其中progId可以采用Javascript,JScript,ECMAScript,VBScript等值.运行cscript.exe时可以执行类似的操作,在命令行中使用该//E选项指定progId .例如,这个命令:
cscript.exe <file> //e:JScript
Run Code Online (Sandbox Code Playgroud)
..将通过JScript引擎运行指定的文件,无论其扩展名如何.
在我的机器上,如果我查看HKLM\SW\Classes\,三个progIds {Javascript,JScript,ECMAScript}都指向相同的CLSID,我猜这是JScript 5.8脚本引擎:{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}
是否有ProgId或CLSID我可以指定运行IE9的Javascript引擎,又称"Chakra"?
IE9的引擎是否仍然被IActiveScript加载?
Microsoft的文档表明它确实如此,但没有指定ProgId或CLSID.
通过CLSID的基础上(形容为"{16d51579-a30b-4c8b-a276-0ff4dc41e755}"创建的IActiveScript的实例在这里),我们得到了IE9的JavaScript引擎,该引擎在怪癖模式下工作.不幸的是,在Quirks模式下不支持ECMAScript 5.
有没有人知道如何为"Chakra"创建一个IActiveScript实例,它在IE9标准模式下工作?