IE 11 でこれまでに見つけた唯一の方法は、for...event
スクリプト ブロックを使用することです。
<script for="myActiveX" event="onSelected(param1, param2)">
method1(param1, param2);
</script>
<object id="myActiveX" ...></object>
両方の要素は、JavaScript を使用して動的に作成することもできます。メソッドでfor
属性を設定することだけを確認する必要があります。setAttribute
var handler = document.createElement("script");
handler.setAttribute("for", "myActiveX");
handler.event = "onSelected(param1, param2)";
handler.appendChild(document.createTextNode("method1(param1, param2);"));
document.body.appendChild(handler);
var activeX = document.createElement("object");
activeX.id = "myActiveX";
activeX.codebase = "foobar.cab";
activeX.classid = "CLSID:123456789-1234-1234-1234-123456789012";
document.body.appendChild(activeX);
古いバージョンの IE (IE 8 以前) は、上記のコードが好きではありません。これらの古いブラウザーでは、メソッドでcodebase
パラメーターとfor
パラメーターを渡す必要があります。createElement
var handler = document.createElement('<script for="myActiveX">');
...
var activeX = document.createElement('<object classid="CLSID:123456789-1234-1234-1234-123456789012">');
新しいブラウザでは、このコードに遭遇すると例外がスローされるため、すべての IE バージョンをサポートするには、この例外をキャッチしてから他の方法を使用する必要があります。