javascript - Chrome 扩展 VueJS:如何在网页上创建覆盖?
问题描述
我正在使用 VueJS 创建一个 Chrome 扩展应用程序。使用 google chrome 扩展,您可以在其他网页中推送一些 HTML,我想用我的 VueJS 应用程序做同样的事情。我创建了一个文件,该文件应该将我的应用程序推送到任何页面的正文中,但它不起作用。
有文件:
import App from './App'
const element = document.querySelector('body').firstChild
const anchor = document.createElement('DIV')
anchor.insertBefore(element)
new Vue({
el: anchor,
render: h => h(App)
})
我也有我的 popup.js,它与 main.js 具有相同的实用程序。该文件用于创建我的应用程序,它是:
import Vue from 'vue'
import App from './App'
import router from './router/index'
import { fb } from './firebase/init'
let app = null;
fb.auth().onAuthStateChanged(() => {
if(!app){
app = new Vue({
el: '#app',
router,
render: h => h(App)
})
}
})
manifest.json 中有我的内容脚本:
{
"name": "******",
"description": "VueJS Extension",
"version": null,
"manifest_version": 2,
"icons": {
"128": "icons/******.png"
},
"browser_action": {
"default_title": "*****",
"default_popup": "popup/popup.html"
},
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"background": {
"scripts": [
"background.js"
]
},
"permissions": [
"identity"
],
"oauth2": {
"client_id": "**************",
"scopes": [
"https://apis.google.com"
]
},
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["print.js"]
}
]
}
如果有人有任何线索,那就太酷了;)
解决方案
一个问题是这个
const element = document.querySelector('body').firstChild
const anchor = document.createElement('DIV')
anchor.insertBefore(element)
现在,根据文档..., insertBefore 像这样工作
parentNode.insertBefore(newNode, referenceNode);
所以,你parentNode
是一个不在 DOM 中的新创建的节点
你newNode
是身体的第一个孩子
并且参考节点为空(因此,您将在末尾插入节点)
你正在有效地做到这一点
const element = document.body.firstChild
const anchor = document.createElement('DIV')
anchor.appendChild(element)
你可能想做的是
const element = document.body.firstChild
const anchor = document.createElement('DIV')
document.body.insertBefore(anchor, element)
推荐阅读
- time - 有没有办法用开始日期和结束日期在 python 中编写 4 天工作和 2 天休假计划
- python - 在一个输入 Python 中请求多个变量
- javascript - 单击复选框并将它们保存到 MySQL 时检查其他复选框
- java - “需要 530 身份验证” SMTP,我不知道为什么
- java - 在 Eclipse 上启动 Java 应用程序时出错
- python - 将 1 和 0 的 numpy 数组转换为十进制(Python)
- c++ - 为什么数组最后会打印不同的元素?
- javascript - 使用 Javascript 解析来自 Api GET 请求的 JSON 数据
- python - ValueError: 层序贯_2 的输入 0 与层不兼容:预期 ndim=5,发现 ndim=4。收到的完整形状:(无、10、250、250)
- android - 如何在kotlin中实现双向数据绑定