在 Javascript 中将属性附加到冒泡事件对象

2024-02-08

在 Chrome/Firefox 中,我可以将自定义属性附加到一个处理程序中的事件对象,并在同一事件的不同处理程序中读取它们,即使事件处理是冒泡的。

我不能在 IE 中做同样的事情。当事件冒泡时,我的自定义属性丢失了。 您知道是否有任何解决方案或解决方法吗?

以下是该问题的示例:

<div id="div1">
<input type="button" value="Foo" id="button1">
</div>

<script>

function attach(el, event, fn) {
  if (el.addEventListener) {
    el.addEventListener(event, fn);
  } else if (el.attachEvent) {
    el.attachEvent('on'+event, fn);
  }

}

attach(document.getElementById("button1"), 'click', function (event) {
event.abc = "done";
return true;
});

attach(document.getElementById("div1"), 'click', function (event) {
alert(event.abc);
return true;
});

</script>

根据我的测试你不能向事件对象添加属性在 IE 中(IE8 测试)。

尝试下一个代码:

attach(document.getElementById("button1"), 'click', function (ev) {
  //ev=ev||event;
  //ev.abc = "done";
  // next lines show you why you cannot save properties in event object
  var xx1=event;
  var xx2=event;
  alert(xx1===xx2); // // showed *false* in IE8, but expected *true*

  return true;
});

我不确定,但也许,什么时候event请求对象,IE8总是返回new对象,包含与先前请求相同的属性/值。

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

在 Javascript 中将属性附加到冒泡事件对象 的相关文章

  • Google reCaptcha 永远加载

    我在我的网站上使用 Google 的 reCaptcha 2 0 它曾经运行良好 但自从我向公众开放我的网站并获得了更多用户后 recaptcha 不再适用于大多数用户 它加载得很好 但一旦用户单击 我不是机器人 复选框 它会永远加载并且从
  • JavaScript 中的“new”关键字是什么?

    The newJavaScript 中的关键字第一次遇到时可能会很混乱 因为人们倾向于认为 JavaScript 不是面向对象的编程语言 它是什么 它解决什么问题 什么时候合适 什么时候不合适 它做了 5 件事 它创建一个新对象 这个对象的
  • 使用 jQuery / .data() 避免内存泄漏

    我正在使用 jQuery 动态创建 HTML 元素 现在需要针对它们存储 JavaScript 数据 但是 我现在担心内存泄漏 因为我实际上从未在对象上调用 删除 我 append 和 detach 它们 但从不 remove jQuery
  • 为什么“事件”在 Chrome 中全局可用,而在 Firefox 中则不然?

    在回答另一个问题时 出现了一个与event对象在匿名函数中可用 无需传入 在 Chrome 中 下面的代码工作正常 但 Firefox 会抛出错误 document ready function uspsSideboxTrackingClo
  • 有没有办法监控页面上运行的 JavaScript 函数?

    有没有办法查看页面上正在执行哪些功能 如果我在页面上加载外部脚本 是否可以动态更改函数的功能或阻止其运行 HTML5 http www w3 org TR html5 scripting 1 html establish script bl
  • Google Charts(AreaChart)如何检测缩放变化

    我正在画一个面积图 在覆盖层上有一些标记 我正在使用explorer选项 仅限水平 以便用户放大和缩小 问题是我找不到一种方法来通知缩放更改 以便有机会更新制造商位置 有一个图表范围变化事件 但它不是由 AreaChart 触发的 我尝试检
  • javascript 和 PHP 中的正则表达式有什么区别吗?

    这是在 javascript 中验证电子邮件地址的正则表达式 我不确定是否可以直接在 PHP 中使用它 a z d u00A0 uD7FF uF900 uFDCF uFDF0 uFFEF a z d u00A0 uD7FF uF900 uF
  • 夜间值班。单击带有文本的元素

    我遇到问题 无法单击具有某些独特文本的网页元素 我有这样的结构 div class wg wagon type title Text div 我试试这个 click wg wagon type title contains Text 但我有
  • 在 IE10 中禁用捏合放大

    在 IE10 触摸模式下 我希望仅使页面的特定部分可缩放 其余的不应该 我找到了这个 http msdn microsoft com en US library ie hh772044 aspx http msdn microsoft co
  • jQuery 检查复选框并触发 javascript onclick 事件

    我正在尝试使用 jQuery 检查复选框并在此过程中触发 onclick 事件 假设我在 html 中定义了一个复选框
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • AngularJS 输入字段未从控制器内的 setTimeout 更新

    我正在使用 AngularJS 支持的页面 并且我需要在只读输入文本字段内显示正在运行的时钟 与data ng model 为了模拟运行的时钟 我使用了 JavaScript 调度程序setTimeout每 1000 毫秒调用一个函数 该函
  • 如何将当前元素传递给 Knockout.js 绑定中的 Javascript 函数?

    因此 我尝试根据是否选中子复选框 使用 Knockout js 将类添加到元素 为此 我试图通过this作为我的函数的参数 目前 我的精简 DOM 结构如下 tr td td tr
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 如何修复 getImageData() 错误画布已被跨源数据污染?

    我的代码在本地主机上运行得很好 但在网站上却不起作用 我从控制台收到此错误 对于这一行 getImageData x y 1 1 data Uncaught SecurityError Failed to execute getImageD
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr
  • 如何设置 Firebase 用户的显示名称?

    根据Firebase网站上的JS Auth文档 它只展示了如何获取 displayName 以及如何更新 displayName 所以我尝试更新它 但这有点不合逻辑 因为你怎么能在不创建某些东西的情况下更新它呢 所以我的问题是 如何设置注册

随机推荐

  • Eclipse - 如何在不单击/更改主视图的情况下知道我正在哪个工作区工作

    目前在一个项目的 4 个不同分支上工作 对于每个分支 Eclipse 中都有一个不同的工作区 问题是 当我在不同的工作空间上打开多个 Eclipse 时 我很难区分它们并了解当前正在查看的工作空间 路径相同 因此所有分支上的窗口名称相同 我
  • 在MYSQL中复制表而不一次复制一行

    我想复制一个非常大的表 但我不想逐行复制它 有办法复制吗 例如 您可以 TRUNCATE 不删除行 行 所以我想知道是否有类似的东西可以复制整个表 更新 逐行插入非常痛苦 因为有 120M 行 无论如何要避免这种情况 MySQL 不再具有可
  • ggplot2:修复因子水平的颜色

    我正在开发一个更大的项目 我正在 ggplot2 中创建多个绘图 这些图涉及在几个不同的谨慎类别 例如 国家 物种 类型 中绘制几种不同的结果 我想完全修复离散类型到颜色的映射 以便 Type A 始终显示为红色 Type B 始终显示为蓝
  • ngrx 中的多个商店

    我正在使用 Angular 和 ngrx 编写一个企业级应用程序 目的是自始至终使用 Flux 和 ngrx 为了重用和可分离性 我们 至少 需要两个彼此不交互的状态存储 但我们确实需要两个存储同时处于活动状态 并且可能从相同的组件进行访问
  • 使用 jquery fileupload basic 以编程方式删除文件

    我使用blueimp文件上传插件 基础版 来实现多文件上传 我正在尝试实现允许用户删除排队上传文件的功能 我无法弄清楚如何正确访问文件数组 每次add回调中 索引为0 文件数组长度为1 仅包含用户点击删除的文件 我正在为排队到 div 的每
  • Android 文本转语音库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我将开发需要实现文本转语音的应用程序 请给我任何强大的图书馆链接 这对我来说太好了 除了 Flite 到引擎库 哪个图书馆最适合这样做 提
  • 我是否“不想”使用读/写锁而不是普通互斥锁?

    同步对共享资源的访问时 是否有原因not使用读 写锁而不是普通互斥锁 这基本上只是一个写锁 besides它具有比我可能需要的更多功能的哲学原因 换句话说 如果我只是默认将读 写锁作为我首选的同步结构 我是否会搬起石头砸自己的脚 在我看来
  • NGINX + Gunicorn + Flask - 502 错误网关 - 套接字文件权限被拒绝

    我们正在尝试将 NGINX 设置为 Gunicorn Python 应用程序的反向代理 我们一直在关注 Digital Ocean 的本指南 https www digitalocean com community tutorials ho
  • GMap.Net 在控件中不显示完整地图

    我正在尝试制作一个能够显示地图的小型应用程序 我遇到了 GMap Net 它非常适合我的目的 除了地图没有完全显示在控件中 我附上一张图片 希望您能理解我的问题 My code of the load button is private v
  • 在 swagger UI 尝试中发送动态自定义标头

    我在java中使用swagger 我正在代码中通过 requestAttributes 读取名为 callerId 的标头 我没有通过注释 HeaderParam 使用标头 由于这个原因 标题部分不会显示在 swagger UI 中进行尝试
  • 在 C# 中使用 byte/short 等有什么理由?

    超过int类型 很多代码要么使用 int 要么使用 double floats 我知道有 NET 移动版本 因此 byte short 有自己的用途 但对于桌面应用程序有什么意义吗 当我从事 C 工作 游戏编程 时 我非常了解我使用的每种数
  • Java中Thread的自定义实现:通过JNI可以吗?

    是否可以以安全 正确的方式在 Java 中 使用 JNI 实现自定义 Thread 类 假设我自己写NewThread类 与本地人start 方法 它分叉执行 调用run 在分叉线程中并返回 那可能吗 JVM 会抱怨吗 根据规范 它 合法
  • 选中时更改切换按钮的背景颜色

    我正在尝试区分单击时切换按钮的状态 我有下面的片段
  • 如何使用 Xamarin.Forms 将搜索栏添加到页面顶部,例如工具栏项目图标

    我正在此页面中使用 masterdetail 页面 我正在使用选项卡式页面 现在我想在页面顶部显示工具栏图标和搜索栏 我能够放置工具栏图标 但与搜索栏斗争 如何将其放置在其顶部行为应与 Whatsapp 应用程序和 YouTube 应用程序
  • 检查变量是否属于 Typescript 中的自定义类型

    我正在尝试检查变量是否属于某种类型 Code type GeneralType SubTypeA SubTypeB type SubTypeA type1 type2 type SubTypeB type3 type4 function s
  • 在 ggplot2 示例中绘制来自 vegan 的 ordiellipse 不起作用

    我正在尝试在 ggplot 中绘制一个带有椭圆体的 pca 双图 我在中找到了一个例子这个线程在这里 https stackoverflow com questions 13794419 plotting ordiellipse funct
  • Ninject 会调用 dispose 并关闭 NHibernate Isession 吗?

    我将 ASP NET MVC 3 与 Ninject 和 NHibernate 一起使用 当想到 DI 时 我认为获得资源的人也确保关闭它 在这种情况下 Ninject 应该负责 但我不确定 Ninject 在使用 InRequestSco
  • Google日历api CalendarList列表返回空元素

    EDIT 原来的海报要求这个C 但是无论使用什么库都会出现同样的问题 其解决方案是独立于语言 使用 C 库 string service account email protected cdn cgi l email protection
  • 对话框中存在的数字选择器 (Android)

    我正在尝试在我的应用程序中实现 NumberPicker 我希望视图如图所示对话指南 http developer android com guide topics ui dialogs html 即 当我实现数字选择器时我得到什么 另外
  • 在 Javascript 中将属性附加到冒泡事件对象

    在 Chrome Firefox 中 我可以将自定义属性附加到一个处理程序中的事件对象 并在同一事件的不同处理程序中读取它们 即使事件处理是冒泡的 我不能在 IE 中做同样的事情 当事件冒泡时 我的自定义属性丢失了 您知道是否有任何解决方案