Javascript 如何获得chrome扩展';要在后台显示的内容脚本?
这是我的package.json,但我的background.js没有在后台运行。我已经尝试了一段时间不同的事情,但一直没有弄明白。提前感谢您的帮助Javascript 如何获得chrome扩展';要在后台显示的内容脚本?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,这是我的package.json,但我的background.js没有在后台运行。我已经尝试了一段时间不同的事情,但一直没有弄明白。提前感谢您的帮助 { "manifest_version": 2, "name": "Focus", "version": "1.9.3", "description": "Block distracting websites and get inspired to focus on what's important", "background_
{
"manifest_version": 2,
"name": "Focus",
"version": "1.9.3",
"description": "Block distracting websites and get inspired to focus on what's important",
"background_page": "background.html",
"icons": {
"16": "inspirelogo16.png",
"48": "inspirelogo48.png",
"128": "inspirelogo128.png"
},
"browser_action": {
"default_icon": "inspirelogo19.png",
"default_title": "Inspire Router",
"default_popup": "/pages/popup.html"
},
"permissions": [
"background",
"notifications",
"tabs",
"<all_urls>",
"webRequest",
"*://*.google.com/"
],
"background": {
"scripts": [
"background.js"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["background.js"]
}
],
"persistent": true
},
"options_page": "/pages/fieldpage.html",
"content_security_policy": "script-src 'self' 'unsafe-eval' chrome-extension://bjmcjeffnloaojffcbaekmcokegnejlf/pages/inspire.html http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js https://ssl.google-analytics.com/ga.js http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js https://connect.facebook.net https://www.facebook.com https://chrome.google.com https://chrome.google.com; object-src 'self'"
}
{
“清单版本”:2,
“名称”:“焦点”,
“版本”:“1.9.3”,
“描述”:“阻止分散注意力的网站,并获得灵感专注于重要的内容”,
“背景页面”:“background.html”,
“图标”:{
“16”:“inspirelogo16.png”,
“48”:“inspirelogo48.png”,
“128”:“inspirelogo128.png”
},
“浏览器操作”:{
“默认图标”:“inspirelogo19.png”,
“默认标题”:“激励路由器”,
“默认弹出窗口”:“/pages/popup.html”
},
“权限”:[
“背景”,
“通知”,
“标签”,
"",
“网络请求”,
“*:/*.google.com/”
],
“背景”:{
“脚本”:[
“background.js”
],
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[“background.js”]
}
],
“持久”:正确
},
“选项页面”:“/pages/fieldpage.html”,
“内容安全策略”:"脚本src“self”“unsafe eval”chrome-extension://bjmcjeffnloaojffcbaekmcokegnejlf/pages/inspire.html http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js https://ssl.google-analytics.com/ga.js http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js https://connect.facebook.net https://www.facebook.com https://chrome.google网站https://chrome.google.com;对象src“self”
}
您应该将内容脚本置于背景之外,如
"background": {
"scripts": [
"background.js"
],
"persistent": true
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["background.js"]
}
],
“背景”:{
“脚本”:[
“background.js”
],
“持久”:正确
},
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[“background.js”]
}
],
正如@minj所提到的,您应该删除background\u页面
属性
此外,后台运行在自己的页面上,而不是在浏览器中看到的页面上。您可以找到它
如果您希望在bg和内容脚本中都可以访问脚本,例如具有共享函数的utils.js文件,可以将其添加到background.scripts
和content\u scripts.js
数组中
您应该将背景页面视为一个附加页面(您可以通过转到chrome://extensions/
并单击分机上的背景页
),与浏览器中打开的选项卡分开。例如,您无法从背景页访问浏览器中正在查看的页面的dom元素
例如,当你重新加载一个普通页面(与上面提到的bg页面相反)时,bg页面及其变量不会刷新。它们只是两个不同的选项卡
但是,内容脚本只是加载到与内容\u脚本匹配的页面中的脚本。匹配的,就好像它们是从页面本身加载的一样。它们不会在页面之间持久存在,也不会共享信息
您可能希望与dom元素交互并拥有一个持久的bg脚本。为此,您使用消息传递协议,使内容脚本和bg页面之间异步。我通常使用bg页面作为持久控制器,从内容脚本获取信息并向其发送订单。您应该将内容\背景之外的脚本,如
"background": {
"scripts": [
"background.js"
],
"persistent": true
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["background.js"]
}
],
“背景”:{
“脚本”:[
“background.js”
],
“持久”:正确
},
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[“background.js”]
}
],
正如@minj所提到的,您应该删除background\u页面
属性
此外,后台运行在自己的页面上,而不是在浏览器中看到的页面上。您可以找到它
如果您希望在bg和内容脚本中都可以访问脚本,例如具有共享函数的utils.js文件,可以将其添加到background.scripts
和content\u scripts.js
数组中
您应该将背景页面视为一个附加页面(您可以通过转到chrome://extensions/
并单击分机上的背景页
),与浏览器中打开的选项卡分开。例如,您无法从背景页访问浏览器中正在查看的页面的dom元素
例如,当你重新加载一个普通页面(与上面提到的bg页面相反)时,bg页面及其变量不会刷新。它们只是两个不同的选项卡
但是,内容脚本只是加载到与内容\u脚本匹配的页面中的脚本。匹配的,就好像它们是从页面本身加载的一样。它们不会在页面之间持久存在,也不会共享信息
您可能希望与dom元素交互并拥有一个持久的bg脚本。为此,您可以使用消息传递协议,使内容脚本和bg页面之间异步。我通常使用bg页面作为持久控制器,从内容脚本获取信息并向其发送订单。删除backgr因为它覆盖了背景
。您只能使用其中一个,不能同时使用两个
或者,通过常规的script
标记将脚本添加到background.html
文件:
<script type="application/x-javascript" src="/background.js"></script>
删除background\u页面
,因为它会覆盖background
。您只能使用其中一个,不能同时使用两个
或者,通过常规的script
标记将脚本添加到background.html
文件:
<script type="application/x-javascript" src="/background.js"></script>
谢谢,那么你如何让js文件在浏览器的后台运行,而不管是哪一页。@YoniBinstock和脚本标记,像往常一样。查看我的答案。更新响应,是的,删除我没有捕获的后台页面