V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
liuhuakawaii

第一次用 qiankun, 子应用 window 使用问题请教

  •  
  •   liuhuakawaii · Sep 3, 2024 · 1852 views
    This topic created in 614 days ago, the information mentioned may be changed or developed.

    使用 qiankun 来进行子应用拆分的时候遇到了以下问题 因为子应用是一个原生的 html 项目,所以有很多挂载在 window 上的属性以及方法 其中有一个鼠标事件处理的问题

      propagateMouseEventToCanvas(event) {
        if (!event.isSimulated) {
          console.log(window ,'-------------------------------');
          const eventType = event.type;
          // Create and dispatch a simulated event to the canvas
          const simulatedEvent = new MouseEvent(eventType, {
            clientX: event.clientX,
            clientY: event.clientY,
            screenX: event.screenX,
            screenY: event.screenY,
            button: event.button,
            buttons: event.buttons,
            ctrlKey: event.ctrlKey,
            shiftKey: event.shiftKey,
            altKey: event.altKey,
            metaKey: event.metaKey,
            relatedTarget: event.relatedTarget,
            bubbles: true,
            cancelable: true,
            view: window
          });
          simulatedEvent.isSimulated = true; // Custom property to mark the event as simulated
          this._canvas.dispatchEvent(simulatedEvent);
        }
      }
      
       btnsWrapper.addEventListener('mousemove', this.scene.propagateMouseEventToCanvas.bind(this.scene));
        btnsWrapper.addEventListener('mousedown', this.scene.propagateMouseEventToCanvas.bind(this.scene));
        btnsWrapper.addEventListener('mouseup', this.scene.propagateMouseEventToCanvas.bind(this.scene));
    

    打印的时候发现 window 为一个 proxy Object 并且控制台报错了

    helpers.ts:122 Uncaught TypeError: Failed to construct 'MouseEvent': Failed to read the 'view' property from 'UIEventInit': Failed to convert value to 'Window'.
    

    按 gpt 改成 globalThis 也无法解决,不是很理解报错的原因以及解决方案,有没有大佬赐教一下

    6 replies    2024-09-03 18:46:42 +08:00
    jydeng
        1
    jydeng  
       Sep 3, 2024
    是不是要关闭 qiankun 的 js 沙箱?
    jydeng
        2
    jydeng  
       Sep 3, 2024
    jydeng
        3
    jydeng  
       Sep 3, 2024
    sandbox 似乎只能作用于 style ,js 的沙箱要找一下
    liaozzzzzz
        4
    liaozzzzzz  
       Sep 3, 2024 via iPhone
    window 改成 window.proxy ,我记得以前这个是获取子应用的 window 的,你这看着就是 view 是 proxy 代理过直接用不了
    liuhuakawaii
        5
    liuhuakawaii  
    OP
       Sep 3, 2024
    @jydeng 设置了确实可以解决这个问题,多谢
    liuhuakawaii
        6
    liuhuakawaii  
    OP
       Sep 3, 2024
    @liaozzzzzz 貌似没有找到这个属性
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2898 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 11:25 · PVG 19:25 · LAX 04:25 · JFK 07:25
    ♥ Do have faith in what you're doing.