gpt4 book ai didi

internet-explorer - ActiveX 自定义事件无法在 IE11 上运行

转载 作者:行者123 更新时间:2023-12-04 01:04:12 26 4
gpt4 key购买 nike

我将我的 IE 从版本 10 升级到 11,发现我的 ActiveX 自定义事件无法工作。

原因是IE11不支持attachEvent没有了,看来我必须使用 addEventListener .例如以前我用过

obj.attachEvent("onSelected", method1); 

现在,它是
obj.addEventListener("onSelected",method1,false); 

改代码后,method1无法触发。我不知道如何将在 ActiveX 插件中实现的自定义事件绑定(bind)到 JS 方法并使其在 IE11 上运行?

最佳答案

到目前为止,我为 IE 11 找到的唯一方法是使用 for...event 脚本 block :

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

关于internet-explorer - ActiveX 自定义事件无法在 IE11 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17671383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com