到目前为止,我为 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 版本,您必须捕获此异常,然后使用其他方法。