Javascript 将事件传递给同级html元素
我创建了一个有三个.js的应用程序,其中有两个渲染器(一个画布和一个div(css渲染器))。 css渲染器位于画布的顶部,我想将任何类型的事件传递给后面的画布元素。到目前为止,我未能创建一个调度程序 到目前为止,我所尝试的: (一) (二) 在案例2中,我得到以下错误: 未捕获的InvalidStateError:未能在上执行“dispatchEvent” “EventTarget”:事件已被调度 我还试图复制对象或在超时后传递它,但似乎没有任何效果。Javascript 将事件传递给同级html元素,javascript,jquery,three.js,Javascript,Jquery,Three.js,我创建了一个有三个.js的应用程序,其中有两个渲染器(一个画布和一个div(css渲染器))。 css渲染器位于画布的顶部,我想将任何类型的事件传递给后面的画布元素。到目前为止,我未能创建一个调度程序 到目前为止,我所尝试的: (一) (二) 在案例2中,我得到以下错误: 未捕获的InvalidStateError:未能在上执行“dispatchEvent” “EventTarget”:事件已被调度 我还试图复制对象或在超时后传递它,但似乎没有任何效果。 我没有做过类似的事情,所以我需要一些帮助
我没有做过类似的事情,所以我需要一些帮助或指导。您不能只将
事件
传递给触发器函数,因为事件是一个对象,触发器需要一个字符串作为参数
请尝试传递事件。改为键入:
$(that.renderer.domElement).trigger(event.type);
(或)
要同时传递鼠标坐标,我要传递一个对象(鼠标)和事件类型。仅传递类型不够好,鼠标坐标也必须是passed@Syd你需要相对于窗户的坐标吗,还是第一个元素?在我的例子中没有太大区别,因为这两个元素一直都是窗口大小的time@Syd好吧,我的答案满足你的所有需要。如果你想要一个更好的解释,或者更多的功能,只要问问。为什么不删除StopRopAgation并让它继续传播呢?您只需要CSSRender是设置画布的元素的子元素(或子元素),我已经尝试将dispatchEvent调用放入setTimeout,它可以防止该错误。但由于某些原因,它似乎没有恰当地安排这次活动。它的父节点获取了事件,但我分派到的节点没有获取该事件。
$(this.cssRenderer.domElement).on("click mousedown mouseup mousemove focus blur keydown keyup change touchstart touchend touchmove", function ( event ) {
event.preventDefault();
event.stopImmediatePropagation();
that.renderer.domElement.dispatchEvent(event.originalEvent);
});
$(that.renderer.domElement).trigger(event.type);