javascript - 按钮 : calling "onclick" parent's element instead of itself (HTML Button) 的奇怪行为

标签 javascript html dom vbscript dom-events

我有以下 Web 应用程序结构,我正在为此进行自动化测试:

<em unselectable="on" class="x-btn-split">
        <button type="button" class="x-btn-text " id="ext-gen523" title="Add Options">Add</button>
</em>

两个对象都有事件监听器,在一些链接的 js 文件中添加了 viw JavaScript(我不知道到底是什么文件)。

用鼠标单击“添加”按钮后,调用 AJAX 函数调用并将行添加到某个表格,单击 em 元素后,打开应用程序菜单。

我尝试通过 VBScript 重现单击添加按钮(正如我所说,我正在自动测试此应用程序),而不是将行添加到表中,应用程序菜单打开。但我确切地知道,我正在单击按钮添加,而不是 em-element。 伪代码,这样做:

set obj = domHelper.GetElementByClassName(container,"x-btn-text","button")
obj.click

如果您知道这种行为的原因,请告诉我,因为我真的不知道该怎么想。 (我尝试了很多不同的方法来解决这个问题,但没有任何帮助)

谢谢!

最佳答案

click ,像大多数事件一样,通过所有祖先元素“冒泡”。当您单击 <button> ,是的,您还单击了 <em>包含它。

如果事件处理程序为 <em>需要知道点击是直接在 <em> 的内容区域中进行的但不是它的任何 child ,它应该看看 event.target (IE<9 中的 srcElement)属性,用于在打开菜单之前检查点击是在其自身上,还是不在按钮上。或者,如果按钮的点击处理程序调用 event.stopPropagation() (在 IE<9 中为 cancelBubble= true),然后事件将停止并且不再继续传递。

关于javascript - 按钮 : calling "onclick" parent's element instead of itself (HTML Button) 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3164386/

相关文章:

javascript - 使用 div 类和表单进行数据操作

html - 选中选项卡时隐藏内容

javascript - 来自index.html 文件中的javascript 的JSON

javascript - 是否有可能获得在页面重新加载时保持不变的选项卡(或窗口)标识符?

javascript - jwplayer js api事件获取玩家索引

javascript - 为什么嵌入的 JavaScript 在响应 ajax 调用而插入时不执行?

html - 从页面的特定部分删除过滤器

PHP Dom 文档 : getting textContent ignoring script tags and comments

javascript - jQuery data() 无法写入 HTML 元素?

javascript - JSON 的 jQuery 自动完成