代码之家  ›  专栏  ›  技术社区  ›  Reza

如何创建角度包含位置属性的MouseEvent

  •  2
  • Reza  · 技术社区  · 6 年前

    我需要在按钮和更改事件上捕获单击事件 type 只是再派一次

    下面类似于jquery中的内容,但我想从角度进行

    button.on("click", function(event) {
                  var newEvent = $.extend({}, event, { type: "dxcontextmenu" });
                  event.stopPropagation();
                  $(this).trigger(newEvent);
                });
    

    我能做到 dispatchEvent 但是 Event MouseEvent 构造函数没有的参数 screenX clientX 或者…

    我试过用扩频器或者 Object.Assign 但是只有 isTrusted 类型 将复制属性。

    我的代码是

    onClick(event:any) {
        event.stopPropagation();
    
            console.log(event);
    
            const newEvent = Object.assign({}, event, { type: 'dxcontextmenu' });
            console.log(newEvent);
            event.target.dispatchEvent(newEvent);
    
        // event.target.dispatchEvent(new Event('dxcontextmenu', { bubbles: true }));
    
      }
    

    这就是 stackblitz 链接到它

    1 回复  |  直到 6 年前
        1
  •  1
  •   Reza    6 年前

    openContextMenu(event: MouseEvent)
    {
        if (event.target)
        {
            const newEvent = new MouseEvent('dxcontextmenu', { bubbles: true });
            newEvent.initMouseEvent(
                'dxcontextmenu',
                true,
                false,
                event.view,
                event.detail,
                event.screenX,
                event.screenY,
                event.clientX,
                event.clientY,
                event.ctrlKey,
                event.altKey,
                event.shiftKey,
                event.metaKey,
                event.button,
                event.relatedTarget
            );
    
            event.stopPropagation();
            event.target.dispatchEvent(newEvent);
        }
    }