问题标签 [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.

0 投票
2 回答
6780 浏览

javascript - 在 Javascript 中使用 addEventHandler 的安全、通用方式?

在深入探讨这个问题的细节之前,我想先说明一下情况。我们的网络分析公司是大型网站的顾问,并且(除了添加单个 SCRIPT 标签)我们无法控制页面本身。

我们现有的脚本使用“旧”方式安装处理程序(element.onclick = blah 的花哨版本;它也执行原始处理程序)完全不知道页面上的“新”(addEventListener 或 attachEvent)处理程序。我们想解决这个问题,使我们的脚本能够在更多站点上运行,而无需进行太多自定义开发。

这里最初的想法是让我们自己的脚本使用 addEventListener/attachEvent,但这会带来一个问题:客户端的站点使用“旧”方式设置处理程序,它会清除我们安装“新”方式的处理程序。快速而肮脏的测试表明这在 IE7 和 FF3 中都会发生,尽管我没有测试整个浏览器范围。还有一个风险是,如果我们在页面的事件处理程序已经设置后使用“新”方式,我们可能会删除它们的处理程序。

所以我的问题是:我可以使用什么安全技术来使用 addEventListener/attachEvent 在 Javascript 中添加事件处理程序,无论页面上的其他事件处理程序是如何安装的,它都可以工作?

请记住:我们无法修改安装我们脚本的站点。(我必须强调,因为对此类问题的默认答案始终是,“只需重写页面,以相同的方式完成所有操作。”)

0 投票
2 回答
89597 浏览

javascript - 正确使用 addEventListener() / attachEvent()?

我想知道如何addEventListener正确使用attachEvent

或者

?

这个跨浏览器是否安全,或者我应该更好地使用这样的东西:

AND:Saymyfunc2仅适用于 IE 7。如何相应地修改正确/首选的方法?

0 投票
1 回答
1925 浏览

javascript - 跨浏览器事件处理

我需要一个跨浏览器功能来注册事件处理程序和(大部分)一致的处理程序体验。我不需要像 jQuery 这样的库的全部重量或功能,所以我自己编写了。我相信我已经通过下面的代码实现了我的目标,到目前为止我的测试已经成功,但是我已经盯着它太久了。我的逻辑是否有任何缺陷或我遗漏的陷阱?

编辑 1:为清楚起见,用浏览器意图注释每个块。更新了 IE 块以不立即调用func(感谢Andy E 敏锐的眼睛)。

编辑 2:更新 IE 块以调用func.call()this不是elem.

编辑 3:更新以通过JSLint与“好的部分”。

0 投票
2 回答
357 浏览

javascript - 如何在 javascript 中将事件附加到父框架的元素?

我想在我的编辑器的链接元素中附加一个“onclick”事件。

我这样做了:

但它不起作用。我希望这个在 IE 中工作,我正在使用 Javascript。有谁知道它有什么问题?

谢谢

0 投票
4 回答
2094 浏览

javascript - 将匿名函数传递给具有局部变量的命名函数时,Javascript 中的范围问题

对不起标题-我想不出一种表达方式。

这是场景:

我有一个构建元素的函数:

在 buildSelect 里面它这样做:

我还有一个数组:

鉴于所有这些,我有一些代码可以做到这一点:

问题是,当 onchange 被其中一个选择触发时,它正确地转到 CallBack() 但第一个参数不正确。例如,如果我更改第三个选择,我希望 CallBack() 用 xs[2] 调用,而不是我得到一些不同的东西,比如 xs[3] 或其他东西。

如果我稍微修改一下:

我仍然在 CallBack() 中得到不正确的值。有些东西告诉我这是范围/关闭相关的,但我似乎无法弄清楚是什么。

我只是希望第一个选择调用 CallBack for onchange,第一个参数为 xs[0],第二个选择为 xs[1],依此类推。我在这里做错了什么?

我应该澄清 xs 是一个全局变量。

谢谢

0 投票
2 回答
457 浏览

internet-explorer - 通过JS将事件附加到IE中的元素并传入对象本身

我有一段 JS 被调用,因为它循环遍历页面上的每个 INPUT 元素:

在好的浏览器中,它会做它应该做的事情。它将焦点和模糊事件侦听器附加到每个元素,当触发时,将对象和触发它的事件传递给函数“toggleHelpText”。

但是,IE 不起作用。在 IE 中发生的情况是,每个附加了事件侦听器的字段都有对象“thisField”,该对象仅引用循环中的最后一个对象。

换句话说,如果我有 3 个输入字段,好的浏览器将分别调用每个将 field1、field2 和 field3 传递为“this”的焦点事件。

在 IE 中,所有 3 个字段,在触发焦点事件时,都将 field3 作为对象传递。

有解决办法吗?

我还尝试了以下语法选项,只是为了在 IE 中出错:

0 投票
2 回答
364 浏览

javascript - 这个(IE)的Javascript替代品

我有类似以下代码的内容:

它被简化了,但基本上它在某个 div 中创建了四个 iframe,当它完全加载时,我需要根据每个帧的 id 触发一些动作。它运行良好,但问题出在 IE 中。IE 不知道 operator this,所以我无法访问内部框架的 id。有什么替代方法可以用于 IE 吗?

谢谢你的帮助!


Abhijit:实际上,整个代码是这样的:

所以它应该适用于所有浏览器。

0 投票
2 回答
264 浏览

javascript - Javascript 将 addEventListener 转换为 attachEvent

我有以下代码以一种很好的符合标准的方式调用 Javascript 函数:)。请注意,我必须发送elementsList[i]到函数(this 关键字不合适),因为事件侦听器被附加到它的侄子(因为需要更好的术语)

这个相当混乱的代码将有效地在 elementsList[i] 中找到当前节点的动态行为的控制元素,并为其添加一个单击事件侦听器。触发时,它将单击的节点传递给切换功能。

问题是它在 IE8 及以下版本中根本不起作用,尽管花了大部分时间试图找到解决方法,但我还是无法让它发挥作用。如果有人知道如何将其翻译成 IE 废话代码,我将不胜感激。

0 投票
1 回答
268 浏览

javascript - 循环内的javascript attachEvent

我在一个循环中使用下面的代码。只要我不使用 IE,它就可以工作。

0 投票
2 回答
1658 浏览

jquery - 将 JQuery 事件附加到“动态创建”控件

我正在附加到页面中的现有 div。附加的文本包含字符串中的 html 代码。问题是,当我在附加到页面后单击它们时,事件不起作用。我猜 Jquery 会在页面加载时加载控件,我必须做一些事情来再次攻击这些事件。