1

IE の activex オブジェクトからイベントを利用したいのですが、うまく動作しないようです。

以下のコードを見て、アイデアが思い浮かんだかどうか教えてください。

<html>
  <head>
   <title>Automate IE</title>
   <script type="text/javascript" language="javascript">
     var ie = new ActiveXObject( "InternetExplorer.Application" );
     [...some calls to ie functions...]
   </script>
  </head>
  <body>
    This is a test for IE automation.
  </body>

ここにリストされているように、「ie」オブジェクトのイベントを使用できるようにしたいと考えています: MSDN IE イベント

しかし、それを機能させることができないようです...次の解決策を試しました(どれも機能しませんでした):

アプローチ 1:

1. eval( "function ie::EventName(){return MyCustomEvent()}" ); - no joy )-:

アプローチ 2:

2. <script for="ie" event="EventName">some code here</script> - still no joy )-:

このファイルは「HTA」拡張子で保存され、MSHTA スクリプト ホストで実行されます

これを行う方法についてアドバイス\ヘルプをいただければ幸いです...ありがとう!

4

2 に答える 2

0

もっと早くあなたの質問に答えたかったのですが、私には過去 3 年間に 2 人の子供がいました ;)

HTA ではもう不可能だと思います。ActiveXObjects は、JScript でイベントをサポートしていません。IE11 より前は、VBScript と CreateObject(object, event_prefix) を使用してイベント フックを登録できました - https://msdn.microsoft.com/en-us/library/xzysf6hc(v=vs.84).aspx VBScript 変数は JavaScript でアクセスできるため、VBScript でイベントを登録します。)

IE < 11 がオプションでない場合は、WScript/CScript を使用する必要があります。たとえば、要点は次のとおりです。https://gist.github.com/subzey/4374329

HTA から WScript を実行することは、 activex オブジェクトを使用して実行できますが、類似のActiveX オブジェクトWScript.Shellがないため(またはいずれにせよ、JavaScript/JScript からアクセスするため)、期待を裏切らないでください。WScript.CreateObjectCreateObject()

目的を達成するには、ハード ドライブ上のファイルを監視 (またはポーリング) する WScript/CScript ホスト スクリプトに IE ロジックをラップする必要があります。その後、HTA アプリケーションはそのファイルにコマンドを書き込むことができます。フィードバック ループが必要な場合、HTA は、JScript ロジックの終了時に更新されるコマンド結果ファイルを監視できます。

私は 90 年代から HTA の支持者であり、今でも個人的な手っ取り早いプロジェクトに HTA を使用していますが、HTA の寿命については壁に書かれています。IE10 と Microsoft が修正されないことを確認して以来、ホスト ウィンドウに関連する多数のバグが既に存在します。

そのため、IE 固有の機能に依存していない場合は、代わりに Electron を調査することをお勧めします: http://electron.atom.io/docs/v0.27.0/api/browser-window/

于 2016-05-10T14:53:32.183 に答える