PhantomJS中的假jQuery鼠标事件

时间:2014-02-09 14:02:30

标签: javascript jquery jasmine phantomjs

我是writing some tests与Jasmine在PhantomJS中运行。一个测试使用$.Event构造函数来触发虚假鼠标事件。例如:

$('.elem').trigger($.Event('click', {
    target: $('.elem').find('.a-child')[0]
}));

这在Chrome,Firefox等中运行良好但在PhantomJS中无法启动。 mouseenter也是如此。有趣的是,如果我做关键事件,它在PhantomJS中工作正常,它似乎只是鼠标。

有没有办法绕过这个,或者更好的方法来假装这个事件?

1 个答案:

答案 0 :(得分:2)

似乎PhantomJS使用触摸事件而不是点击,这解释了失败。 Modernizr.touch在PhantomJS中返回true

I ended up根据测试结果附加到触摸或点击:

nav.trigger($.Event(Modernizr.touch ? 'touchstart' : 'click', {
    target: nav.find('a').get(1)
}));

可悲的是,这对mouseentermouseleave事件没有帮助。我能找到的最近的细节是this old bug report