问题标签 [attachevent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 Javascript 中使用 addEventHandler 的安全、通用方式?
在深入探讨这个问题的细节之前,我想先说明一下情况。我们的网络分析公司是大型网站的顾问,并且(除了添加单个 SCRIPT 标签)我们无法控制页面本身。
我们现有的脚本使用“旧”方式安装处理程序(element.onclick = blah 的花哨版本;它也执行原始处理程序)完全不知道页面上的“新”(addEventListener 或 attachEvent)处理程序。我们想解决这个问题,使我们的脚本能够在更多站点上运行,而无需进行太多自定义开发。
这里最初的想法是让我们自己的脚本使用 addEventListener/attachEvent,但这会带来一个问题:客户端的站点使用“旧”方式设置处理程序,它会清除我们安装“新”方式的处理程序。快速而肮脏的测试表明这在 IE7 和 FF3 中都会发生,尽管我没有测试整个浏览器范围。还有一个风险是,如果我们在页面的事件处理程序已经设置后使用“新”方式,我们可能会删除它们的处理程序。
所以我的问题是:我可以使用什么安全技术来使用 addEventListener/attachEvent 在 Javascript 中添加事件处理程序,无论页面上的其他事件处理程序是如何安装的,它都可以工作?
请记住:我们无法修改安装我们脚本的站点。(我必须强调,因为对此类问题的默认答案始终是,“只需重写页面,以相同的方式完成所有操作。”)
javascript - 正确使用 addEventListener() / attachEvent()?
我想知道如何addEventListener
正确使用attachEvent
?
或者
?
这个跨浏览器是否安全,或者我应该更好地使用这样的东西:
AND:Saymyfunc2
仅适用于 IE 7。如何相应地修改正确/首选的方法?
javascript - 跨浏览器事件处理
我需要一个跨浏览器功能来注册事件处理程序和(大部分)一致的处理程序体验。我不需要像 jQuery 这样的库的全部重量或功能,所以我自己编写了。我相信我已经通过下面的代码实现了我的目标,到目前为止我的测试已经成功,但是我已经盯着它太久了。我的逻辑是否有任何缺陷或我遗漏的陷阱?
编辑 1:为清楚起见,用浏览器意图注释每个块。更新了 IE 块以不立即调用func
(感谢Andy E 敏锐的眼睛)。
编辑 2:更新 IE 块以调用func.call()
而this
不是elem
.
编辑 3:更新以通过JSLint与“好的部分”。
javascript - 如何在 javascript 中将事件附加到父框架的元素?
我想在我的编辑器的链接元素中附加一个“onclick”事件。
我这样做了:
但它不起作用。我希望这个在 IE 中工作,我正在使用 Javascript。有谁知道它有什么问题?
谢谢
javascript - 将匿名函数传递给具有局部变量的命名函数时,Javascript 中的范围问题
对不起标题-我想不出一种表达方式。
这是场景:
我有一个构建元素的函数:
在 buildSelect 里面它这样做:
我还有一个数组:
鉴于所有这些,我有一些代码可以做到这一点:
问题是,当 onchange 被其中一个选择触发时,它正确地转到 CallBack() 但第一个参数不正确。例如,如果我更改第三个选择,我希望 CallBack() 用 xs[2] 调用,而不是我得到一些不同的东西,比如 xs[3] 或其他东西。
如果我稍微修改一下:
我仍然在 CallBack() 中得到不正确的值。有些东西告诉我这是范围/关闭相关的,但我似乎无法弄清楚是什么。
我只是希望第一个选择调用 CallBack for onchange,第一个参数为 xs[0],第二个选择为 xs[1],依此类推。我在这里做错了什么?
我应该澄清 xs 是一个全局变量。
谢谢
internet-explorer - 通过JS将事件附加到IE中的元素并传入对象本身
我有一段 JS 被调用,因为它循环遍历页面上的每个 INPUT 元素:
在好的浏览器中,它会做它应该做的事情。它将焦点和模糊事件侦听器附加到每个元素,当触发时,将对象和触发它的事件传递给函数“toggleHelpText”。
但是,IE 不起作用。在 IE 中发生的情况是,每个附加了事件侦听器的字段都有对象“thisField”,该对象仅引用循环中的最后一个对象。
换句话说,如果我有 3 个输入字段,好的浏览器将分别调用每个将 field1、field2 和 field3 传递为“this”的焦点事件。
在 IE 中,所有 3 个字段,在触发焦点事件时,都将 field3 作为对象传递。
有解决办法吗?
我还尝试了以下语法选项,只是为了在 IE 中出错:
javascript - 这个(IE)的Javascript替代品
我有类似以下代码的内容:
它被简化了,但基本上它在某个 div 中创建了四个 iframe,当它完全加载时,我需要根据每个帧的 id 触发一些动作。它运行良好,但问题出在 IE 中。IE 不知道 operator this,所以我无法访问内部框架的 id。有什么替代方法可以用于 IE 吗?
谢谢你的帮助!
Abhijit:实际上,整个代码是这样的:
所以它应该适用于所有浏览器。
javascript - Javascript 将 addEventListener 转换为 attachEvent
我有以下代码以一种很好的符合标准的方式调用 Javascript 函数:)。请注意,我必须发送elementsList[i]
到函数(this 关键字不合适),因为事件侦听器被附加到它的侄子(因为需要更好的术语)
这个相当混乱的代码将有效地在 elementsList[i] 中找到当前节点的动态行为的控制元素,并为其添加一个单击事件侦听器。触发时,它将单击的节点传递给切换功能。
问题是它在 IE8 及以下版本中根本不起作用,尽管花了大部分时间试图找到解决方法,但我还是无法让它发挥作用。如果有人知道如何将其翻译成 IE 废话代码,我将不胜感激。
javascript - 循环内的javascript attachEvent
我在一个循环中使用下面的代码。只要我不使用 IE,它就可以工作。
jquery - 将 JQuery 事件附加到“动态创建”控件
我正在附加到页面中的现有 div。附加的文本包含字符串中的 html 代码。问题是,当我在附加到页面后单击它们时,事件不起作用。我猜 Jquery 会在页面加载时加载控件,我必须做一些事情来再次攻击这些事件。