gpt4 book ai didi

javascript - 为什么 jQuery 无法将鼠标悬停处理程序附加到 Flash 对象?

转载 作者:数据小太阳 更新时间:2023-10-29 05:42:24 25 4
gpt4 key购买 nike

出于某种原因,jQuery (1.6.2) 无法将鼠标悬停处理程序附加到 Flash 对象。

有趣的是,getElementById().onmouseover = ... 按预期工作。

// fail
$('#content-banner').mouseover(function () {alert(1)});
// success
document.getElementById("content-banner").onmouseover = function (evt) { alert(3); };

参见 live example at jsFiddle了解详情。

是什么阻止了 jQuery 附加处理程序?


更新

一个快速的解决方法是按照 ShankarSangoli 的建议使用 live() .然而,问题仍然存在。 为什么 jQuery 无法附加处理程序?

最佳答案

jQuery 不支持 data()<applet> , <embed> , 和 <object> .由于 jQuery 的事件处理程序堆栈依赖于 data()工作,因此调用mouseover()在一个对象上会失败。

因此,只要您不使用 jQuery 的事件处理就可以:

var banner = $('#content-banner');
banner.live ( 'mouseover', ... ); // works, becuse live hooks to document not to banner
banner[0].onmouseover = ... ; // works
banner[0].addEventListener('mouseover', ... , false); // also works

如果深入研究代码,您会发现带有 classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' 的对象存在异常。 ,这是 Flash,但是 classid 仅适用于 IE。因此,简短的回答是避免在对象上使用 jQuery 事件。

关于javascript - 为什么 jQuery 无法将鼠标悬停处理程序附加到 Flash 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042648/

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