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

2024-01-25

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

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

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

See the jsFiddle 的实例 http://jsfiddle.net/xaCp7/5/了解详情。

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


Update

一个快速解决方法是使用live()正如建议的尚卡尔·桑戈利 https://stackoverflow.com/questions/7042648/why-does-jquery-fail-to-attach-a-mouseover-handler-to-a-flash-object/7042749#7042749。然而问题仍然存在。为什么 jQuery 无法附加处理程序?


jQuery 不支持data() on <applet>, <embed>, and <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 事件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 jQuery 无法将鼠标悬停处理程序附加到 Flash 对象? 的相关文章

随机推荐

  • log4net %属性不起作用

    我有一个小型测试项目 代码如下 class Program static void Main string args log4net GlobalContext Properties logFileName log txt log4net
  • 如何使用 cURL 获取 JavaScript 加载的网页内容?

    我正在尝试从网站上获取分数表 问题是该网站正在使用显然加载的 javascriptdocument ready 因此 我似乎没有成功获取表格 我得到的只是该页面顶部的按钮 关于如何解决这个问题有什么建议或想法吗 cURL 只会为您提供页面的
  • quarto_render 从 .bat / .cmd 文件中损坏

    这有点复杂 但我认为其他人也可能遇到这个问题 四开本很棒 但一直面临一个问题 其中一个功能 quarto render 无法呈现通过 bat cmd 文件访问的脚本中的文档 如果我从 RStudio IDE 运行 R 脚本 没有问题 但通过
  • Cairo 示例适用于 Python 2.7,但不适用于 Python 3

    最简单的例子 我们通过 Gtk 创建一个窗口 添加 Gtk DrawingArea 的绘图区域 并在其上通过 Cairo 绘制文本 Example usr bin env python from gi repository import G
  • 如何获取 JSON.Net 中 JsonProperty 的名称?

    我有一堂课是这样的 JsonObject MemberSerialization OptIn public class foo JsonProperty name in json public string Bar get set etc
  • 将接口传递给 ASP.NET MVC 控制器操作方法

    在我的 ASP NET MVC 应用程序中 我有一个界面 充当多个不同视图模型的模板 public interface IMyViewModel Client Client1 get set Client Client2 get set V
  • 移动分配与标准复制和交换不兼容

    测试新的移动语义 我刚刚询问了我在使用移动构造函数时遇到的问题 但正如评论中所表明的那样 问题实际上是当您使用标准的 复制和交换 习惯用法时 移动赋值 运算符和 标准赋值 运算符发生冲突 这是我正在使用的类 include
  • 如何在 IONIC 3 中使用路由

    我正在开发一个 Ionic 3 应用程序 现在我正在使用NavController用于路由和切换页面 Ex this navCtrl push DetailsPage 但我现在需要使用 Angular 路由 我发现类似的question h
  • 使用 Mongoose 更新 MongoDB 中的许多记录的正确方法是什么

    我使用 Mongoose 从 MongoDB 中提取一些记录 将它们导入到另一个系统中 然后我想将所有这些文档的状态 文档属性 设置为processed 我可以找到这个解决方案 通过id集更新多个文档 猫鼬 https stackoverf
  • 将多个文件/文件夹从 Windows 资源管理器传递到外部应用程序

    您好 有谁知道如何让 Windows 资源管理器将多个文件 文件夹传递到注册表中引用的外部应用程序 c 我当前能够使用 1 语法对单个文件 文件夹进行操作 但不确定如何让资源管理器传递多个项目 有谁知道如何做到这一点 当您在资源管理器中选择
  • 从 ISO8601 日期时间字符串中提取时区

    如何从 Java 8 中的 ISO 8601 日期字符串中提取时区 e g String timestamp1 2014 02 15T01 02 03Z String timestamp2 2017 10 27T16 22 27 605 0
  • 如何让 git-pull 默认变得详细?

    浏览 git config 变量和 git pull 文档 我没有看到默认情况下使 git pull pull 详细的方法 有人知道有办法吗 并不是所有的东西都有一个配置参数 但你基本上可以使用别名自己处理它 alias pv pull v
  • PHP 是否阻止了粘性位?

    我尝试使用 PHP 的 chmod 将权限设置为 02775 但由于某种原因 它只将 0775 添加到文件中 我认为这可能是 PHP 的 chmod 实现或其他问题 所以我尝试使用 PHP 的 passthru 函数运行 chmod 027
  • Google 登录:拒绝为目标域生成登录提示的权限(javascript Web 应用程序)

    我正在使用 Google 登录 Javascript API 即gapi signin button 在网络应用程序上 该应用程序由 gulp 服务器提供服务 绑定到0 0 0 0 当我在本地开发时 登录过程有效 但是当我在远程服务器上运行
  • FileReader API:如何同步读取文件

    我正在尝试读取使用 html 页面上的输入类型文件选择的文件 我已经实现了读取文件的功能 并且可以读取文件内容 但实际问题是正在读取文件内容异步地它允许执行脚本的其他功能 我将读取的文件内容存储在数组中 当移动到其他函数时 数组是空的 当引
  • 使用 jQuery 对列表项进行分组

    我有一个这样的列表 ul li span class date 2011 05 01 span p Text p li li span class date 2011 05 01 span p Text p li li span class
  • 在同一个图中显示多个可用对象?

    我想在同一个 MATLAB 图中显示多个表格 就像 subplot 可用于显示多个图形一样 然而 似乎 subplot 不适用于 uitable 对象 正如您所看到的 我得到的是五组空轴 而不是分布在图中的五个表 并且只有一个表可见 有没有
  • Python 中的嵌套 try/ except

    try commands try commands try commands try commands except commands return to final commands except commands return to f
  • 如何在没有 MediaExtractor 的情况下使用 MediaCodec 进行 H264

    我需要在没有 MediaExtractor 的情况下使用 MediaCodec 并且我正在使用 FileInputStream 读取文件 目前它不起作用 它在屏幕上显示绿色的乱码图像 这是整个源代码 FileInputStream in n
  • 为什么 jQuery 无法将鼠标悬停处理程序附加到 Flash 对象?

    由于某种原因 jQuery 1 6 2 无法将鼠标悬停处理程序附加到 Flash 对象 有趣的是 getElementById onmouseover 按预期工作 fail content banner mouseover function