PhantomJS也可以实现双击。
推荐
这是从答案的stovroz改编而来,触发本地dblclick
事件,包括mousedown
、mouseup
和click
事件(每个事件都有两个)。
var rect = page.evaluate(function(selector){
return document.querySelector(selector).getBoundingClientRect();
}, selector);
page.sendEvent('doubleclick', rect.left + rect.width / 2, rect.top + rect.height / 2);
其他方法
以下两种方法仅触发dblclick
事件,但不会触发应该在其之前触发的其他事件。
改编自此答案,作者为torazaburo:
page.evaluate(function(selector){
var el = document.querySelector(sel);
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
'dblclick',
true , true ,
window, null,
0, 0, 0, 0,
false, false, false, false,
0 , null
);
el.dispatchEvent(ev);
}, selector);
摘自Jobins John的此答案:
page.evaluate(function(selector){
var el = document.querySelector(sel);
var e = document.createEvent('MouseEvents');
e.initMouseEvent('dblclick', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
el.dispatchEvent(e);
}, selector);
完整的测试脚本
click()
在DOM API中根本不存在,你可能是在jQuery或类似的库中看到它的? - YemSalat