Quasar BEX 没有捕获 bridge.on('event') 内部从 dom-hooks 发出的背景钩子

Quasar BEX doesn't catch bridge.on('event') inside background-hooks emitted from dom-hooks

official Quasar documentation 之后,我在 dom-hooks.js:

中发出我的事件
export default function attachDomHooks (bridge) {
  const clickHandler = (event) => {
    bridge.send('message.to.quasar', { target: event.target })
  }
  window.addEventListener('click', clickHandler, true)
}

然后我在后台抓到失败-hooks.js:

export default function attachBackgroundHooks (bridge) {
  bridge.on('message.to.quasar', event => {
    console.log('message.to.quasar', event.data)
    bridge.send(event.eventResponseKey)
  })
}

基本上,我需要将一些数据放入背景挂钩中的 chrome.storage,但从 dom-挂钩触发此操作。我做错了什么?

您需要使用 content-hooks.js 文件作为代理将事件转发到后台脚本。 dom 无法访问后台脚本 - 这是设计使然。

举个例子(未经测试):

dom-挂钩:

export default function attachDomHooks (bridge) {
  bridge.send('message.to.quasar', { from: 'dom-hooks' })
}

内容挂钩:

export default function attachContentHooks (bridge) {
  bridge.on('message.to.quasar', event => {
    bridge.send('message.to.quasar.bg', event.data)
  })
}

背景挂钩:

export default function attachBackgroundHooks (bridge) {
  bridge.on('message.to.quasar.bg', event => {
    console.log(event)
  })
}