Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 资源必须列在web\u accessible\u Resources manifest键中,才能由扩展之外的页面加载_Google Chrome_Google Chrome Extension - Fatal编程技术网

Google chrome 资源必须列在web\u accessible\u Resources manifest键中,才能由扩展之外的页面加载

Google chrome 资源必须列在web\u accessible\u Resources manifest键中,才能由扩展之外的页面加载,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,我已经尝试了很多方法(所有文档化的过程)在检查onUpdated.addListener上的URL时将脚本注入特定页面。最后,下面带有“executescript”的代码似乎可以工作,但并不完美。我可以获取警报,但无法通过getElementById/getElementsByName找到页面的文档元素 当我检查页面时,脚本被注入。但在错误控制台中,我得到: 含铬量-extension://jfeiadiicafjpmaefageabnpamkapdhe/js/Leoscript.js. 资源必

我已经尝试了很多方法(所有文档化的过程)在检查onUpdated.addListener上的URL时将脚本注入特定页面。最后,下面带有“executescript”的代码似乎可以工作,但并不完美。我可以获取警报,但无法通过getElementById/getElementsByName找到页面的文档元素

当我检查页面时,脚本被注入。但在错误控制台中,我得到:

含铬量-extension://jfeiadiicafjpmaefageabnpamkapdhe/js/Leoscript.js. 资源必须列在web\u accessible\u Resources manifest键中,才能由扩展之外的页面加载

Manifest.json:

{
“名称”:“工作板的Leo扩展”,
“版本”:“1.6”,
“清单版本”:2,
“内容安全策略”:“脚本src'self';对象src'self',
“说明”:“Leo扩展”,
“背景”:{
“脚本”:[“js/Leojshelper.js”],
“持久”:正确
},
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[“js/eventPage.js”],
“运行时间”:“文档开始”
}
],
“icons”:{“48”:“images/bob48.png”,“128”:“images/bob128.png”},//定义任何图标大小以及要用于它们的文件。48/128等。
“浏览器操作”:{
“默认图标”:“images/bob.png”,//您希望在chrome工具栏上显示什么图标
“default_popup”:“LeoExtwatch.html”//单击按钮时要弹出的页面。
},
“权限”:[
“制表符”、“http://*/*”、“https://*/*”//跨站点访问请求
],
“网络可访问资源”:[“js/LeoScript.js”]
}
我还为脚本授予了“web\u可访问的\u资源”权限,但仍然没有成功。后台脚本中的代码:

chrome.tabs.onUpdate.addListener(函数(tabId、changeInfo、tab){
如果(changeInfo.status==“完成”){
如果(tab.url.indexOf(“in.yahoo”)!=-1){
chrome.tabs.update(tabId,{url:https://login.yahoo.com/config/mail?.intl=us" });
chrome.tabs.executeScript(tabId{
代码:“document.body.appendChild(document.createElement('script')).src=”+
chrome.extension.getURL(“js/LeoScript.js”)+“;”
},空);
LeoScript.js中的代码,将被注入到特定页面中

$(文档).ready(函数(){
警报(“注入”);
document.getElementById('username')。值='aaaaaaa';
});
内容脚本:eventPage.js,我用来注入脚本

var script=document.createElement('script');
script.src=chrome.extension.getURL(“js/Leoscript.js”);
(document.body | | document.head | | document.documentElement).appendChild(脚本);

请告诉我上述代码中的任何更改将解决权限问题。提前感谢。

更新:最终解决了您的问题。在eventPage.js中,您尝试注入未列入白名单的js/Leoscript.js,而不是js/Leoscript.js(大写“S”),这是白名单。请注意,URL区分大小写

LeoScript.js:

alert('injected');
document.getElementById('username').value='aaaaaaa';
编辑:

这是使用和组合的工作版本

manifest.json

popup.html


如果您在运行时仍有问题,请告诉我。许多人会因为此错误登录到此页面,因为他们没有在manifest.json文件中包含他们的图像/web资源。指向api文档的链接很有帮助,因此共享它:

@方 觉: 感谢您刚才的回复,但是相同的结果“拒绝加载LeoScirpt:资源必须在web中列出”\u accessible\u resource我再次尝试,结果似乎是wierd.chrome.tabs.executeScript(tabId,{code:…})成功,而chrome.tabs.executeScript(tabId,{file:…})失败(尽管代码都是一样的)。再次更新。请看一看。@VinelGogini非常感谢您方 觉, 你指出了我愚蠢的错误,让我大吃一惊。再次感谢你的时间谢谢苏达珊,当我尝试你的解决方案时,我在制表符中出错。executeScript:加载文件失败:“chrome”-extension://jfeiadiicafjpmaefageabnpamkapdhe/js/LeoScript.js"。可能是我在注入脚本时做错了什么,因为我正在使用内容脚本:eventPage.js注入代码。@VineelGoginni:您能消除
js/LeoScript.js
的文件夹结构并将其保留在根路径中吗。使用
{file:chrome.extension.getURL(“LeoScript.js”)}
将文件移动到根路径后,检查答案“我已经编辑了itI”,尝试消除文件夹结构,但如果使用文件:chrome.extension.getURL(“LeoScript.js”),则会出现相同的错误我也没有得到警告。@VineelGoginini:我已经用一个工作版本编辑了我的答案,将其作为参考,如果您仍然有问题,请告诉我。我尝试了您的代码,它工作正常,没有控制台错误,但我需要将脚本注入另一个页面的DOM,以便访问它的元素。当您尝试将代码注入另一个页面。
alert('injected');
document.getElementById('username').value='aaaaaaa';
{
"name":"Off Screen Tabs Demo",
"description":"This demonstrates Off Screen Tabs API",
"manifest_version":2,
"version":"1",
"permissions":["tabs","<all_urls>"],
"browser_action":{
    "default_icon":"screen.png",
    "default_popup":"popup.html"
},
 "web_accessible_resources": ["js/LeoScript.js"] ,
 "permissions":["tabs","<all_urls>"]
}
alert("Injected..");
<html>
<head>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
document.addEventListener("DOMContentLoaded",function (){
    chrome.tabs.executeScript( {"file": "js/LeoScript.js"});
});