【发布时间】:2011-10-11 05:48:09
【问题描述】:
根据浏览器和其他因素有条件地加载 ActiveX 控件。
为了处理来自 ActiveX 控件的事件,一个简单的 jquery .bind('Event', ...) 将不起作用。相反,在我看来,我唯一的选择是使用<script ... for='myPlugin' event='Event'></script> 样式绑定。
1) 似乎如果脚本标记是 HTML 的静态部分并且在页面上存在控件之前加载,那么 IE 不会触发该事件 2) 如果需要(动态)插件的多个实例,则不能对对象 ID 进行硬编码
但是当我添加以下代码时,我会在事件触发之前立即得到“'param1' is undefined”(我几乎可以肯定它不是响应事件触发)。
$('HEAD').append($('<script language="javascript" ' +
'type="text/javascript" for="myPlugin" event="Event(param1)">' +
'$('#myPlugin').triggerHandler("jQueryBoundEvent", [ param1 ]);' +
'<' + '/script>'));
从网络上,我收集到 jQuery 会干扰添加脚本标签,而不是 eval()s 它们。这将解释未绑定的 param1 和脚本的立即执行。脚本的 for 和 event 属性在 eval() 期间丢失。
是否有另一种方法可以动态加载插件,并附加到它的事件而不对处理程序进行硬编码?
=======
另外,从各种帖子看来,即使 $.bind() 不适用于 ActiveX 和 XPI 插件,attachEvent() 或 addEventListener() 应该可以工作。是这样吗?对于动态添加的插件,我无法确认。
【问题讨论】:
标签: jquery event-handling activex