Quasar CLI 与 Webpack - @quasar/app-webpack
src-bex/js/content-hooks.js
本质上是一个标准的 内容脚本,您可以像使用标准内容脚本一样使用它。内容脚本能够访问底层网页的 DOM,因此您可以操作该页面内容。
此文件带来的额外好处是此函数
import { bexContent } from 'quasar/wrappers'
export default bexContent((bridge) => {
//
})
content_paste
此函数通过 Quasar BEX 构建链自动调用,并注入一个在 Quasar 应用实例和 BEX 的后台脚本之间共享的桥接器。
例如,假设我们想要对 Quasar 应用中按下按钮做出反应,并在底层网页上突出显示某些文本,这将通过内容脚本完成,如下所示
setup () {
const $q = useQuasar()
async function myButtonClickHandler () {
await $q.bex.send('highlight.content', { selector: '.some-class' })
$q.notify('Text has been highlighted')
}
return { myButtonClickHandler }
}
content_paste
.bex-highlight {
background-color: red;
}
content_paste
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()
})
})
content_paste
内容脚本位于 隔离的世界 中,允许内容脚本更改其 JavaScript 环境,而不会与页面或其他内容脚本发生冲突。
隔离世界不允许内容脚本、扩展和网页访问彼此创建的任何变量或函数。这也使内容脚本能够启用网页无法访问的功能。
这就是 dom-hooks
的用武之地。