IE9/IE10 で ActiveX コントロールのイベントを <オブジェクト名>::<イベント名> で定義すると問題が発生します

現象
ActiveX コントロールのイベントを JavaScript で <オブジェクト名>::<イベント名> で定義した場合、Internet Explorer 9 および Internet Explorer 10 での ActiveX コントロールの参照カウント管理に問題があり、メモリリークやクラッシュなど予期しない問題が発生することがあります。

以下は一例です。
UserControl1 が ActiveX コントロール、ButtonClick がイベント名です。
<script type="text/javascript">             function UserControl1::ButtonClick(){             alert("TEST");            }</script>


原因
ActiveX コントロールの参照カウンタを IE が適切に開放しないことが原因です。
回避策
イベントを以下のような別な文法で定義することで回避できます。

<script type="text/javascript" for="UserControl1" event="ButtonClick()">        alert("TEST"); </script>
状況
本現象は Internet Explorer 9 および Internet Explorer 10 の問題です。


詳細
本現象でどのように問題が表面化するかは、ActiveX コントロールの実装や使用しているランタイムによって様々です。参照カウンタが残った状態であるため、ActiveX コントロールを使用していないページに遷移した場合でも、メモリ上に ActiveX コントロールが保持されたままとなる可能性があります。

弊社では、Visual Basic 6.0 で作成された ActiveX コントロールを使用時、ウインドウクローズ時に Access Violation が発生する現象を確認しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2864032 - 最終更新日: 09/29/2016 15:03:00 - リビジョン: 5.0

Windows Internet Explorer 10, Windows Internet Explorer 9

  • KB2864032
フィードバック