将事件传递给同级 html 元素

Pass event to a sibling html element

本文关键字:html 元素 事件      更新时间:2023-09-26

我创建了一个包含三个.js的应用程序,其中有 2 个渲染器(1 个画布和 1 个div(css 渲染器))。css 渲染器位于画布顶部,我想将任何类型的事件传递给后面的 canvas 元素。到目前为止,我未能创建调度程序...

到目前为止我尝试过:

1)

// on top element css renderer 
$(this.cssRenderer.domElement).on("click mousedown mouseup mousemove focus blur keydown keyup change touchstart touchend touchmove", function ( event ) {
    event.preventDefault();
    event.stopImmediatePropagation();
    //canvas background domelement
    $(that.renderer.domElement).trigger(event);
});

2)

$(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);
});

在情况2中,我收到以下错误:

未捕获的无效状态错误:无法在 上执行"调度事件" "事件目标":事件已在调度中。

我还尝试复制对象或在一段时间后传递它,但似乎没有任何效果。我没有做过类似的事情,所以我需要一点帮助或一些指导。

你不能

event传递给触发器函数,因为事件是一个对象,触发器需要一个字符串作为参数。

相反,请尝试传递event.type

$(that.renderer.domElement).trigger(event.type);

在这里阅读。

JSFiddle(或使用鼠标坐标)

为了传递鼠标坐标,我正在传递一个对象(鼠标)以及事件类型。