IE6 中的 event.currentTarget

2023-11-30

我有一个事件处理程序,我将其附加到一个元素以捕获冒泡的单击事件。 我需要一个reliable获取元素的方法caught事件,而不是触发它的元素。 该特定元素高于 srcElement/target 的级别数量是任意的,因此使用 ParentNode 或任何其他方法都不是可行的解决方案。 这特别需要在 IE6 中工作。 虽然我有点喜欢 jQuery 框架,但我will not在此使用 jQuery,因此任何 jQuery 建议都将被视为无用。

TL;博士:我需要一个reliableIE6 中的 event.currentTarget,没有 jQuery。

任何帮助将不胜感激。


Update: attachEvent似乎确实在这里造成了问题。来自 quirksmode.org:

在以下情况下,它指的是窗口:

element.onclick = function () {doSomething()}
element.attachEvent('onclick',doSomething)
<element onclick="doSomething()">

注意存在attachEvent()。该技术的主要缺点是Microsoft 事件注册模型就是它attachEvent()创建对该函数的引用但不复制它。因此,有时不可能知道当前哪个 HTML 正在处理该事件。

解决这个问题的唯一方法似乎是创建一个包装器,例如:

var addListener = (function() {
    if(document.attachEvent) {
        return function(element, event, handler) {
            element.attachEvent('on' + event, function() {
                var event = window.event;
                event.currentTarget = element;
                event.target = event.srcElement;
                handler.call(element, event);
            });
        };
     }
     else {
        return function(element, event, handler) {
            element.addEventListener(event, handler, false);
        };
     }
}());

Then this将引用该元素,就像event.currentTarget你会通过event作为第一个参数。

Usage:

addListener(element, 'click', function(e) {
    // this refers to element
    // e.currentTarget refers to element
    // e.target refers to the element that triggered the event
}); 

旧答案:(适用于inline and 传统的事件处理程序,以及addEventListener(但不是attachEvent))

在事件处理程序内部,this指事件处理程序附加到的元素。

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

IE6 中的 event.currentTarget 的相关文章

  • Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

    我需要的是两个 ng views 的功能 因为我不能 我想更改某些内容的innerHTML 并编译它 我遇到的问题是 当我再次更改内容时 我可以编译 但是 Angular 是否会自行删除绑定 或者我必须手动执行此操作 如果是这样 怎么办 编
  • 使用 jquery 远程图像属性

    目前我正在尝试获取远程图像宽度 高度 我正在开发一个链接共享模块 就像当你在 Facebook 上粘贴链接时 你可以看到标题 描述和图像 所以我尝试使用 php getimagesize 来获取图像宽度 高度 但速度非常慢 所以我正在考虑使
  • ReferenceError:regeneratorRuntime未定义(但在范围内工作)

    我遇到过这种奇怪的情况 ReferenceError regeneratorRuntime is not defined 我已经设法在一个非常小的设置中重现 与同一问题上的类似问题相比 并且还注意到一些奇怪的行为 具体取决于是否使用范围 以
  • Chart.js 在初始化时设置活动段

    我正在使用 Chart js v2 并且尝试在加载图表时模拟圆环图上某个段的 悬停状态 因此看起来有一个部分已突出显示 我已经搜索和梳理了代码一天 但找不到一个好的方法来做到这一点 提前致谢 设置片段的悬停样式有点令人困惑 因为它没有真正记
  • Eslint errorring 导入没有扩展名的 jsx

    我正在尝试在 es6 中导入 jsx 文件而不需要 jsx 扩展名 import LoginErrorDialog from LoginErrorDialogView Not import LoginErrorDialog from Log
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 在新的 Google 协作平台 <嵌入 HTML> 中使用 localStorage 和 IndexedDB 不起作用

    我正在尝试将新的 Google 协作平台用于我开发的网页 但是 我在存储本地数据时遇到了问题 本地文件在 Windows 和 Apple safari chrome 中运行良好 从 Google 协作平台尝试一下 没有什么乐趣 此外 在 s
  • 如何格式化 Highcharts 的 (x,y) 对数据的日期时间

    我的序列化方法会产生如下所示的日期时间字符串 2014 07 09T12 30 41Z 为什么下面的代码不起作用 function container highcharts xAxis type datetime series data x
  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea

随机推荐

  • docker extra_host 参数需要主机名的字典值,如何使用变量?

    在 ansible playbook 中 docker 参数 extra host 包含两部分 主机 ip address 我试图将主机和 IP 地址作为变量传递 它们来自提示变量 我的主机文件中的最终结果是 1 2 3 4 server
  • 解析数据库授权 - 用户对象的安全性

    我有一个 ASP NET MVC 4 Web 应用程序 我在后端使用 Parse 作为数据库 https www parse com 和 C 作为编程语言 我使用 ParseUser 类来登录注册用户 https www parse com
  • 逆透视 Excel 矩阵/数据透视表?

    有没有一种快速的方法来 取消透视 Excel 矩阵 数据透视表 在 Excel 或其他地方 无需编写宏或其他代码 同样 我可以自己编写代码 C 或 VBA 或其他 来执行此操作 我想知道是否可以做到without代码 快点 例如 我需要转换
  • fopen 用于写入但不独占

    我想用fopen file w 打开文件进行写入但不独占 IE 我想让另一个进程在文件仍然打开时读取该文件 请注意 我在每行之后都会进行同花 这样我就不会错过任何内容 当其他进程从文件读取时 写入将处于空闲状态 该文档没有提到排他性 但实验
  • 检测到 CallbackOnCollectedDelegate

    当我的代码运行 5 10 分钟后 我不断收到此错误 检测到 CallbackOnCollectedDelegate 消息 对 CashRecyclerTestapp MessageMonitor NativeMethods WndProc
  • 尝试对自定义 JavaScript 对象进行排序

    我不太擅长 JS 但到目前为止还幸存下来 我正在创建一个复杂的 JS 对象并想要对其进行排序 该对象的结构如下所示 cart attributes Attribute Value 我正在创建一个独特的属性 它告诉我由冒号任意分隔的 3 件事
  • Ubuntu Python“没有名为 paramiko 的模块”

    所以我尝试在 Ubuntu 上使用 Python 2 7 使用 Paramiko 但是 import paramiko 会导致此错误 Traceback most recent call last File
  • 在excel vba中使用数组或字典作为sql中的from子句

    是否可以使用数组或字典作为 SQL 语句中的表 例如 strSQL SELECT FROM myArray 提前致谢 扩展 Nathan Sav 提供的想法 以下代码应该 Dim a 3 As String a 0 1 as C1 a 1
  • 在 Git 中仅提交文件的部分更改

    当我在 Git 中更改文件时 如何才能仅提交部分更改 例如 如何仅提交文件中已更改的 30 行中的 15 行 您可以使用 git add patch
  • Scala:用最后一个非空值填充列表中的空白

    我有一个类似的列表 val arr Array a b c 我正在寻找一种方法来创建 Array a a a b c c 您可以尝试使用折叠 简单 易于理解 的方法是向左折叠 Array empty String arr case prev
  • 如何打开 Excel 工作簿而不显示消息 该工作簿包含指向其他数据源的链接。以编程方式?

    我想以编程方式打开 1 个或多个 Excel 工作簿 当我打开工作簿时 你会得到一个问题 该工作簿包含其他数据源的链接 我不想按 不更新 您如何离开此消息框 所以功能不会再中断 不需要更新 尝试放入工作簿打开事件处理程序 Applicati
  • InternalsVisibleTo 的替代方案

    我目前正在尝试在我的解决方案中编写单元测试 但我想将单元测试放在不同的单独项目中 问题是当我生成一些假测试数据时 我需要设置类的属性 但这是不可能的 因为属性具有私有 内部设置 我找到了一种使用属性仅向某些项目公开内部属性的方法Intern
  • 如何获取生成的 java 进程的 PID

    我正在编写几个 java 程序 在完成我想做的任何事情后 需要在单独的 JVM 中杀死 清理 为此 我需要获取我正在创建的 java 进程的 PID jps l可在 Windows 和 Unix 上运行 您可以使用 java 程序调用此命令
  • 带 url 重定向的 Rails 句柄 404

    我希望使用 Rails 将链接重定向到互联网上 我确信这些链接从我的旧域到新域 我想使用地址 example com about about 将不再存在 在我的 application controller 中获取 404 检查 url 然
  • NSDate 因连续操作而崩溃

    我下面有以下代码 旨在将名为 today 的类变量向前或向后更改一天 它会工作一次 但之后就会崩溃 无论我按左键还是右键 它都会做同样的事情 我究竟做错了什么 今天的 var 是一个类 var 发起为 today NSDate date 这
  • VBA Powerpoint - 如何突出显示选定的文本

    我想将所选文本突出显示为某种颜色 但这不起作用 你能帮我吗 Sub ShadingLtYellow ActiveWindow Selection TextRange HighlightColor RGB RGB 255 255 175 En
  • 为什么 Pinia/Vuex 比具有服务类的经典方法更受青睐? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 皮尼亚 Vuex Pinia Vuex 以及 Redux 被设计为 单一事实来源 您可以拥有一个或多个存储来保存应用程序数据 并且可以从任何地方获取这些数据 Pinia 商店如下所示 ex
  • 如何在nuxt中添加流(flowtype)支持?

    我想为 nuxt 项目添加流支持 我的项目使用 webpack 和 babel 我可以在某处找到工作示例吗 如果我跑flow check 没有错误 当我运行时yarn run dev 我收到语法错误 我知道有这些未答复的 问题在那里 我再次
  • 编码返回“未知”

    对于这个例子 http pastebin com QyebfD1pz3 和 cvc4 返回 未知 作为 check sat 的结果 两者对于原因都不是很详细 有没有办法让 z3 关于其执行更加详细 你的脚本使用了这个策略 s Then si
  • IE6 中的 event.currentTarget

    我有一个事件处理程序 我将其附加到一个元素以捕获冒泡的单击事件 我需要一个reliable获取元素的方法caught事件 而不是触发它的元素 该特定元素高于 srcElement target 的级别数量是任意的 因此使用 ParentNo