我有以下 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/