yus*_*ulx 12 internet-explorer activex internet-explorer-11
我将IE从版本10升级到11,发现我的ActiveX自定义事件无法正常工作.
原因是IE11不再支持attachEvent,似乎我必须使用addEventListener.例如以前我用过的
obj.attachEvent("onSelected", method1);
Run Code Online (Sandbox Code Playgroud)
现在,它是
obj.addEventListener("onSelected",method1,false);
Run Code Online (Sandbox Code Playgroud)
更改代码后,无法触发method1.我不知道如何将自定义事件(在ActiveX插件中实现)绑定到JS方法并使其在IE11上运行?
kay*_*ahr 13
到目前为止,我发现IE 11的唯一方法是使用for...event脚本块:
<script for="myActiveX" event="onSelected(param1, param2)">
method1(param1, param2);
</script>
<object id="myActiveX" ...></object>
Run Code Online (Sandbox Code Playgroud)
这两个元素也可以使用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);
Run Code Online (Sandbox Code Playgroud)
较旧的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">');
Run Code Online (Sandbox Code Playgroud)
较新的浏览器在遇到此代码时会抛出异常,因此要支持所有IE版本,必须捕获此异常,然后使用其他方法.
| 归档时间: |
|
| 查看次数: |
12426 次 |
| 最近记录: |