[英]Exchanging Settings from Options Page to Content-Script in Chrome Extension
[英]Modify Angular menu-bar from Chrome Extension content-script
我一直在开发一个扩展程序(目前仅限谷歌浏览器),它应该为我学校的在线学习环境添加功能。 这个网站(实际上不是学校自己运营的)前端使用Angular 。
对于扩展,我使用Typescript和Parcel 。 在网页上运行的脚本是内容脚本。
我正在尝试向左侧的菜单栏添加一个项目。 这是我试过的:
将纯 HTML 插入ul
元素,但这会破坏整个菜单栏,用户之后无法使用它。
在content-script中使用Angular(通过NPM安装)找到menu-bar元素的scope,然后添加新选项(Menu-bar是一个数组),然后应用它。 虽然这似乎也行不通,就像这样:
预期行为(使用浏览器控制台)
let target = document.getElementsByClassName("main-menu")[0]; let menu = angular.element(target); console.log(menu); >>> p.fn.init [ul.main-menu, context: ul.main-menu]
收到的行为(来自内容脚本)
let target = document.getElementsByClassName("main-menu")[0]; let menu = angular.element(target); console.log(menu); >>> p.fn.init [ul.main-menu]
缺少上下文让我觉得我的内容脚本和网页脚本没有在同一个 scope 中运行。这是正确的吗? 我也无法在内容脚本中使用.scope()
方法。
这是我的插件manifest.json
json。 请告诉我
{
"name": "Magister Plus",
"description": "TBD",
"version": "0.0.1",
"manifest_version": 3,
"permissions": [
"activeTab",
"scripting",
"tabs"
],
"background": {
"service_worker": "./background/background.js"
},
"host_permissions": [
"https://*.magister.net/*"
],
"content_scripts": [
{
"matches": ["https://*.magister.net/*"],
"js": ["./content/domain.js"]
},
{
"matches": ["https://*.magister.net/magister/#/vandaag"],
"js": ["./content/vandaag.js"]
}
],
"action": {}
}
我不太确定在这里做什么,因为我根本不熟悉 Angular.js。
谢谢你的帮助!
- 要更改 html,您需要使用 appendChild 或 insertAdjacentHTML,但不能使用 innerHTML。 2)要访问上下文属性,您需要在页面上下文中运行该部分代码。 通过@wOxxOm
这确实有效! 太感谢了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.