为什么捐赠
API 资源管理器
升级指南
新增!
quasar.config 文件
转换为使用 Webpack 的 CLI
浏览器兼容性
支持 TypeScript
目录结构
命令列表
CSS 预处理器
路由
延迟加载 - 代码分割
处理资源
启动文件
预取功能
API 代理
处理 Webpack
处理 process.env
使用 Pinia 进行状态管理
使用 Vuex 进行状态管理
代码风格检查器
测试和审计
开发移动应用
Ajax 请求
向公众开放开发服务器
Quasar CLI 与 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 应用,/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 的用武之地。