如果屏幕启用了触摸,ExtJ6.2.0在Firefox上就不能工作了。我注意到了使用该框架的经典版本的问题,我无法判断现代版本是否也受到了影响。
这正是问题所在:如果屏幕启用了触摸功能,则可以通过手势使用应用程序,但不能使用鼠标。鼠标单击不会触发单击事件。
森查论坛上提到了这个问题,但令人沮丧的是,Sencha为订阅者解决了这个问题,但并没有发布新的GPL版本。还有一个代码片段,但我不太清楚如何使用它:
// Undo sencha's logic
// Needed for top nav buttons to not open links in new tabs/windows when clicked in IE11 EXTJS-13775
// Firefox 52 is getting deteceted now as ALWAYS having pointer events
// chromeOS causing issues too
// unit tests failing
if (Ext.isIE || Ext.isEdge || (Ext.firefoxVersion >= 52) || Ext.os.is.ChromeOS || window.inUnitTest) {
// sorry windows mobile phones...
var eventMap = Ext.dom.Element.prototype.eventMap;
eventMap.click = 'click';
eventMap.dblclick = 'dblclick';
}发布于 2017-04-05 16:41:32
经过一些尝试和错误,并在代码中比较了console.log和rifling,我想出了一个覆盖来修复这个bug。
/**
* workaround for bug in ExtJs 6.2.0.
* Resolved in current yet unreleased version
*/
Ext.define('Mb.override.dom.Element', {
override: 'Ext.dom.Element'
},
function(){
var additiveEvents = this.prototype.additiveEvents,
eventMap = this.prototype.eventMap;
if(Ext.supports.TouchEvents && Ext.firefoxVersion >= 52 && Ext.os.is.Desktop){
eventMap['touchstart'] = 'mousedown';
eventMap['touchmove'] = 'mousemove';
eventMap['touchend'] = 'mouseup';
eventMap['touchcancel'] = 'mouseup';
eventMap['click'] = 'click';
eventMap['dblclick'] = 'dblclick';
additiveEvents['mousedown'] = 'mousedown';
additiveEvents['mousemove'] = 'mousemove';
additiveEvents['mouseup'] = 'mouseup';
additiveEvents['touchstart'] = 'touchstart';
additiveEvents['touchmove'] = 'touchmove';
additiveEvents['touchend'] = 'touchend';
additiveEvents['touchcancel'] = 'touchcancel';
additiveEvents['pointerdown'] = 'mousedown';
additiveEvents['pointermove'] = 'mousemove';
additiveEvents['pointerup'] = 'mouseup';
additiveEvents['pointercancel'] = 'mouseup';
}
})我没有测试每个事件翻译组合是否有效。鼠标触发的带有触摸屏的click事件所需的线条包括:
eventMap['click'] = 'click';
eventMap['dblclick'] = 'dblclick';发布于 2017-04-06 21:52:13
这是个众所周知的问题。有关详细信息,请参阅我们的站点兼容性说明:https://www.fxsitecompat.com/en-CA/docs/2016/touch-event-support-has-been-re-enabled-on-windows-desktop/
https://stackoverflow.com/questions/43236899
复制相似问题