Quasar CLI with Webpack - @quasar/app-webpack
内容钩子

src-bex/js/content-hooks.js本质上是一个标准的内容脚本,欢迎您使用它。 内容脚本能够访问基础网页的DOM,因此您能够操纵所述页面的内容。

此文件的附加好处是此功能:

import { bexContent } from 'quasar/wrappers'

export default bexContent((bridge) => {
  //
})

此功能通过Quasar BEX构建链自动调用,并注入一个在Quasar应用程序实例和BEX的后台脚本之间共享的桥。

例如,假设我们要对Quasar应用程序上按下的按钮做出反应,并在基础网页上突出显示一些文本,这可以通过如下内容脚本来完成:

// Quasar App, /src

setup () {
  const $q = useQuasar()

  async function myButtonClickHandler () {
    await $q.bex.send('highlight.content', { selector: '.some-class' })
    $q.notify('Text has been highlighted')
  }

  return { myButtonClickHandler }
}
/* src-bex/css/content-css.css */

.bex-highlight {
    background-color: red;
}
// src-bex/js/content-hooks.js:
import { bexContent } from 'quasar/wrappers'

export default bexContent((bridge) => {
  bridge.on('highlight.content', ({ data, respond }) => {
    const el = document.querySelector(data.selector)
    if (el !== null) {
      el.classList.add('bex-highlight')
    }

    // Let's resolve the `send()` call's promise, this way we can await it on the other side then display a notification.
    respond()
  })
})

内容脚本生活在隔离的环境中,允许内容脚本对其JavaScript环境进行更改,而不会与页面或其他内容脚本发生冲突。

隔离的环境不允许内容脚本、扩展和网页访问其他脚本或扩展创建的任何变量或函数。 这也使内容脚本能够使用不应由网页访问的功能。

这是dom-hooks使用的地方。