2009-06-30 10 views
3

私は、jQueryを使用してページにActiveXコントロールを動的に追加しようとしています。追加は成功です。ただし、コントロールがこのように行われると、初期化されません。コントロールを含むページのレンダリングが完了したら、IEがActiveXコントロールのOnCreateメソッドを呼び出すと思います。問題は、レンダリングが終了するまでタグがページに存在しないため、OnCreateが呼び出されないことです。javascriptを使用してページにActiveXコントロールを追加することはできますか?

それが問題なのかどうかはわかりませんが、それは単なる推測です。誰にもこの経験はありますか?特定の時間にIEにOnCreateを強制的に呼び出すことは可能ですか?

タグがhtmlにある場合、コントロールは正常に機能します。私が問題を見る唯一の時間は、javascriptを使ってオブジェクトをページに追加するときです。

アップデート:私はそれがレンダリング時にページ上

<object> 

タグに遭遇した場合、IEが何を知っている必要があります。コントロールはそのコンテキストで正常に動作するので、IEはその時点で何かを呼び出しています。ページポストレンダーにコントロールを追加した後、手動で呼び出す必要があります。

おかげで、ピート

+0

コード? :) –

+0

すみません。 jQuery( 'body')。append(activeX);あなたは本当にそれを見る必要がありますか? – slypete

+0

はい、そうです。暗闇の中でデバッグしようと他の人に尋ねることは、悪い考えです。なぜなら、最初に仮定したことは、あなたが何をやっているのかわからないからです。 – EricLaw

答えて

1

新しいActiveXObjectを(プログラムID)を使用して、完全にクロスプラットフォームに非友好的な方法でコントロールをインスタンス化することができます。 ProgIDは、 "appName.typeName"という形式の文字列です。例:

var excel; 
excel = new ActiveXObject("Excel.Application"); 
... 

この例は、Excelがコンピュータにインストールされている場合にのみ機能します。

+0

ありがとう、名前をここで説明できますか、blah.blah?私はコントロールのソースコードを持っているので、探したいものを知る必要があります。現在、私が提供しているのは、オブジェクトタグのCLSIDとコードベースです。 – slypete

+0

これは何ですか?たとえば、上記の例のApplicationはそのIDispatchインターフェイスを実装していますか?これらの値を決定するために必要なカスタムActiveXコントロールがあります。 – slypete

0

IEの下にあるJavaアプレットを使用して、私は今日あなたと同様の問題を抱えていました。私の回避策(私は、ページがレンダリングを終えた後にアプレットを置くことを望んでいた)は、私のアプレットで簡単なhtmlページを指すsrcを使って、目に見えないiframeを動的に作成することでした。 iframeをロードした後、私はそれを親と呼び、アプレットがロードされたことを通知します。

+0

このコントロールはドラッグアンドドロップをサポートするウィジェットフレームワークにロードされているため、iframeを使用することはできません。 – slypete

関連する問題