【发布时间】:2021-03-26 04:06:22
【问题描述】:
问题
对于站点测试,我正在尝试使用基于some other answers on here 的 JS 来模拟对如下元素的中间单击(或滚轮单击)。
HTML:
<a
id="example-link" href="https://www.google.com/"
target="_blank"
onclick="window.open('https://www.google.com/', '',
'width=500, height=500, resizable=1, scrollbars=1');
return false;">
<span>Middle Click Me</span>
</a>
JS(希望在这里改变一些东西):
var middleClick = new MouseEvent( "click", { "button": 1, "which": 2 });
jQuery("#example-link")[0].dispatchEvent( middleClick );
The issue is shown in this jsfiddle.
- 请注意,常规点击通常会发送一个弹出窗口。 jsfiddle 正在捕捉弹出窗口并在新选项卡中打开它。
- 使用 jsFiddle 代替 stackoverflow fiddle 以避免混淆,因为堆栈溢出 fiddle 无法正确处理 window.open()。
将 1) 手动中键单击与 2) 运行代码以模拟单击进行比较。
问题是,当我以编程方式触发中间点击时,它会触发打开新窗口的 onclick 方法以及在新选项卡中打开链接(同时创建弹出窗口和选项卡,而不仅仅是一个选项卡)。如果手动点击该链接,则不会触发弹窗。
问题
有没有更好的方法来模拟中间点击(最好是跨浏览器兼容)?它的编写方式,我真的无法让 MouseEvent 脚本准确地模拟手动中间点击。
编辑:不幸的是,我无法更改 HTML 对象或修改 DOM 以测试完整性,所以我希望 onclick 标记保留在元素上。
【问题讨论】:
-
尝试删除 onclick="window.open('google.com/…); return false;"它应该适用于中间按钮
-
不幸的是,我无法摆脱 onclick 标记(或者根本无法修改 DOM)。在原帖中澄清了。
-
我将您的示例代码移到了 Stack Overflow sn-p 中,并重组了您的介绍性文本。如果编辑后的版本不能正确反映您的意图,请随时重新编辑(或恢复到您的原始版本)。
-
我最终将它从 stackoverflow sn-p 中取出,因为它没有按预期工作并且不想混淆,但保留了您的一些其他编辑!谢谢你:)
标签: javascript onclick mouseevent ui-automation popupwindow