2011-07-22 9 views
2

ActiveXのプラグインベンダーは、ActiveXの<object />タグがダイナミックではない場合よりも面白く変わっていると主張しています挿入された。jQueryが挿入されたActiveX <object />タグの動作が異なる

plugin = $('<object ... >... </object>').get(0); 
$('#pluginPlaceholder').append(plugin); 

動的にコントロールを追加した結果は、プラグインがロードを行うことで、(何のクラッシュ、単に無応答)機能の一部が機能しませんが、他の部分は動作しません。 (無反応対クラッシュの詳細は、内部的に発生しているエラーを処理する方法を実装したものであると信じていますが)。アイテムの作成ではなく、さらに

しかし、jQueryのそれに触れていない場合は、それが正しく動作$('#pluginPlaceholder').html('<object id='obj' ... >... </object>'); plugin = document.getElementById('obj');

document.getElementById('pluginPlaceholder').innerHTML = '<object id='obj' ... >... </object>'; 
plugin = document.getElementById('obj'); // $('#obj').get(0); seems to be valid too 

はjQueryのは、どのような方法でそれに影響を与えるようにタグに何を行う可能性がありますか?

答えて

2

IEのFireBreathプラグインで実行している問題とよく似ています。何が起こるのは、jqueryがオブジェクトタグを構築するときに、pluginPlaceholder要素にタグを入れる前にメモリ内にタグを構築するということです。この問題は、実際にActiveXコントロールをインスタンス化してからDOMに配置することになります。

IEがActiveXコントロールをDOM要素内に配置するように指示された場合、IEコントロールを移動する前にInPlaceDeactivateを呼び出してから新しい要素内に配置し、InPlaceActivateを呼び出します。多くのActiveXコントロールはこれを予期しておらず、時には特定のものが失われることがあります(ページからのイベントハンドラなど)。

問題を解決するには、オブジェクトタグのCLSIDまたはTYPEを、新しい場所に追加するまで設定しないでください。

+0

Well Hot Dog!これは素晴らしい答えです。ありがとう。 –

+1

それは追跡しなければならないのは非常に厄介なことだ – taxilian

+0

他の人のために、私はこれが完全に解決したと思ったが、たいていはそれだけでした。私はベンダーのプラグインで動作の変更を(まだ微妙に)取得していましたが、ブラウザセッションごとのプラグインの最初の読み込み中にエラーが発生するようでした。これらのケースを適切に処理できないのは、ベンダー製品のバグです。しかし、この答えはまだ私の質問に対する答えです。 –

関連する問題