由于需要通过浏览器的console
控制台用js
实现在网页上实现一个点击的自动化操作。
按钮
Button
同时添加了两个事件监听器,一个是冒泡阶段事件监听器(useCapture
为false
),需要正常触发;另一个是捕获阶段事件监听器(useCapture
为true
),调用了event.stopPropagation()
方法。
其中需要触发冒泡阶段事件监听器,但是捕获阶段事件监听器调用了event.stopPropagation()
方法,所有采用以下方式模拟点击该Button
没有任何反应:
btn = document.getElementsByClassName('')[0]
btn.click()
模拟点击按钮btn.dispatchEvent(new MouseEvent('click', { bubbles: true }));
btn.send_keys(Keys.ENTER)
注:不能直接调用冒泡阶段的事件监听器,也不能修改捕获阶段的事件监听器
其他尝试(都没有效果)
setTimeout
函数来延迟调用event.stopPropagation()
方法。// 获取元素
let element = document.getElementById('myElement');
// 添加捕获阶段的事件监听器
element.addEventListener('click', function(event) {
setTimeout(function() {
event.stopPropagation();
}, 0);
}, true);
// 添加冒泡阶段的事件监听器
element.addEventListener('click', function() {
console.log('冒泡阶段的事件监听器被触发');
}, false);
// 触发点击事件
element.click();
dispatchEvent
方法来创建和触发一个新的事件。// 获取元素
let element = document.getElementById('myElement');
// 创建一个点击事件
let event = new MouseEvent('click', {
bubbles: true, // 使事件在冒泡阶段传播
cancelable: true // 使事件可以被取消
});
// 添加冒泡阶段的事件监听器
element.addEventListener('click', function() {
console.log('冒泡阶段的事件监听器被触发');
}, false);
// 触发事件
element.dispatchEvent(event);
如果能解决,可以有偿
1
shenyu1996 146 天前 via Android 1
事件注册前重写一下这个方法呢 Event.prototype.stopPropagation ,前面加一些判断逻辑
|
2
Eighty OP 好像可以哎!感谢大佬回答👍
|