actually this code works but not perfectly:
let redirect = function(e) {
if (e.target.className === "someOther") {
let newEvt = new PointerEvent(e.type, e);
newEvt.preventDefault();
viewer.handler._element.dispatchEvent(newEvt);
e.stopPropagation();
}
};
if (isMobile) {
document.addEventListener(“pointerdown”, redirect, true);
document.addEventListener("pointermove", redirect, true);
document.addEventListener("pointerup", redirect, true);
document.addEventListener("pointercanceled", redirect, true);
}
But now the question is why not perfectly? do I have to do something with the other pointer events?
From the Cesium ScreenSpaceEventHandler:
function registerListeners(screenSpaceEventHandler) {
var element = screenSpaceEventHandler._element;
var alternateElement = !defined(element.disableRootEvents) ? document : element;
if (FeatureDetection.supportsPointerEvents()) {
registerListener(screenSpaceEventHandler, ‘pointerdown’, element, handlePointerDown);
registerListener(screenSpaceEventHandler, ‘pointerup’, element, handlePointerUp);
registerListener(screenSpaceEventHandler, ‘pointermove’, element, handlePointerMove);
registerListener(screenSpaceEventHandler, ‘pointercancel’, element, handlePointerUp);
} else {
registerListener(screenSpaceEventHandler, ‘mousedown’, element, handleMouseDown);
registerListener(screenSpaceEventHandler, ‘mouseup’, alternateElement, handleMouseUp);
registerListener(screenSpaceEventHandler, ‘mousemove’, alternateElement, handleMouseMove);
registerListener(screenSpaceEventHandler, ‘touchstart’, element, handleTouchStart);
registerListener(screenSpaceEventHandler, ‘touchend’, alternateElement, handleTouchEnd);
registerListener(screenSpaceEventHandler, ‘touchmove’, alternateElement, handleTouchMove);
registerListener(screenSpaceEventHandler, ‘touchcancel’, alternateElement, handleTouchEnd);
}
registerListener(screenSpaceEventHandler, ‘dblclick’, element, handleDblClick);
var wheelEvent;
if (‘onwheel’ in element) {
wheelEvent = ‘wheel’;
} else if (document.onmousewheel !== undefined) {
wheelEvent = ‘mousewheel’;
} else {
wheelEvent = ‘DOMMouseScroll’;
}
registerListener(screenSpaceEventHandler, wheelEvent, element, handleWheel);
}
only pointer events with up/down/move/cancel or mouse/touch events with up/start/down/end/move/cancel are listened to, but something weird happens when crossing element boundaries.