問題タブ [iactivescript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - IE9のJavascriptエンジン(コードネーム「Chakra」)のProgIdまたはCLSIDとは何ですか
.NETを使用して、MicrosoftのIActiveScript規則に準拠するスクリプトエンジンをホストするアプリを作成できます。これには、MicrosoftのJScriptとVBScript、およびPerlScript、RubyScriptが含まれ、サードパーティの他に何があるかわかりません。
コードでそれを行う方法は次のようなものです:
ここで、progId
はJavascript、JScript、ECMAScript、VBScriptなどの値をとることができます。コマンドラインでオプションを指定してprogIdを指定すると、cscript.exeを実行するときに同様のことができ//E
ます。たとえば、次のコマンドは次のとおりです。
..拡張子に関係なく、指定されたファイルをJScriptエンジンを介して実行します。
私のマシンでは、を見るとHKLM\SW\Classes\
、3つのprogId {Javascript、JScript、ECMAScript}はすべて同じCLSIDを指しています。これは、JScript5.8スクリプトエンジンだと思います。{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}
IE9のJavascriptエンジン(別名「チャクラ」)を実行するために指定できるProgIdまたはCLSIDはありますか?
IE9のエンジンはまだIActiveScriptによってロードされますか?
Microsoftのドキュメントでは、ProgIdまたはCLSIDは指定されていませんが、指定されていることが示されています。
c# - IE9 の JavaScript エンジン (「チャクラ」) を実装する IActiveScript のインスタンスは、Quirks モードで動作します。
CLSID "{16d51579-a30b-4c8b-a276-0ff4dc41e755}" (ここで説明) に基づいて IActiveScript のインスタンスを作成することにより、Quirks モードで動作する IE9 の JavaScript エンジンを取得します。残念ながら、Quirks モードでは ECMAScript 5 はサポートされていません。
IE9標準モードで動作する「チャクラ」用のIActiveScriptのインスタンスを作成する方法を知っている人はいますか?
internet-explorer-9 - IE9 JS エンジン (チャクラ) を使用して SCRIPTITEM_CODEONLY シンボルを追加する際のエラー
以前の JScript エンジン (CLSID_JScript) でしばらくの間、ブラウザー拡張機能 (BHO) でアクティブ スクリプトを使用してきましたが、最近、新しい IE9 スクリプト エンジン (Chakra) もサポートすることにしました。私たちが行うことの 1 つは、独自のモジュール (名前空間) を作成するオプションを使用AddNamedItem
してエンジンにシンボルを追加することです。SCRIPTITEM_CODEONLY
残念ながら、これを Chakra で動作させることはできませんでした。シンボルを追加してすぐにそのスクリプト ディスパッチを取得する最も単純な例でさえ、E_OUTOFMEMORY
エラーが発生します。
GetScriptDispatch
呼び出しはエラーを返します。例全体は Github で見ることができます。
すべてのメソッドにブレークポイントを設定しましたが、呼び出されるのはとIActiveScriptSite
だけなので、サイトの実装が問題だとは思わないでください。GetLCID
OnStateChange
私は見つけることができるすべての例を見て、エンジンの状態をSCRIPTSTATE_CONNECTED
手動で設定すること、QI対象の追加のインターフェースを実装することなど、考えられるすべてを試しましたLCID
。何も違いはないようです。
何が与えられますか?この基本的な例は Chakra で機能すると思います。
c++ - IActiveScript プロファイリング - スクリプト ソースの表示
IE の JavaScript Chakra エンジンで遊んでいます。
MSDN からサンプル コードをダウンロードしました。関数 ID とスクリプト ID しかない場合に関数ソースを取得する方法を見つけようとしています。
js スクリプトのプロファイリングを開始し、プロファイラー ( IActiveScriptProfilerCallback2
) の出力から、どの関数がコンパイルされ、呼び出されているかを確認できます...
たとえば、コールバックはFunctionCompiled
次のようになります。関数 ID とスクリプト ID、さらには関数名も取得できますが、関数のソース コードを見つける方法がわかりません。
c++ - IE で現在のページの IActiveScript を取得する
IE プラグイン (BHO) があり、スクリプト エンジンにアクセスしたいと考えています。
プロファイリングを開始したいので、IActiveScript
おそらくインターフェイス ポインターが必要です。
私はIWebBrowser2
ポインターを持っています。そこからIHTMLDocument
( get_Document
) を取得してクエリを実行しましたがIActiveScript
、IActiveScriptSite
成功しませんでした。
も試しIHTMLDocument->get_Script
ましたが、スクリプト ポインターのみを返しIDispatch
ます (と同じIActiveScript::GetScriptDispatch
)。
c++ - C++ で IActiveScript を使用して cscript を実行する
cscript
with IActiveScriptParse
andを使用してスクリプトを実行しようとしていますParseScriptText
が、何らかの理由でエラーが発生します: E_UNEXPECTED
。
この記事は私を大いに助けてくれました。私はgetEngineGuid
自分のコードでその機能を使用しています。
以下のコードは私が試したものです。それは印刷します:
意味は をactiveScriptParse->ParseScriptText
返しますE_UNEXPECTED
。それで、私は何を間違っていますか?
どうもありがとう!
javascript - ネイティブ COM メソッドを jscript のファースト クラス シチズンとして機能させる
私のアプリケーションは jscript ( IActiveScript
、IE9) をホストしています。インターフェイス(デュアル、IDispatch
)をエクスポートします(以下を参照)。jscriptから呼び出すことができます:
しかし、それを別の関数に渡す (または変数に代入する) ことはできません:
質問: ネイティブ関数をプロパティのように見せるにはどうすればよいですか?
インターフェース:
そのインターフェースの実装は次のとおりです。