gpt4 book ai didi

javascript - 扩展 list 必须请求访问此主机的权限

转载 作者:行者123 更新时间:2023-12-03 01:37:23 25 4
gpt4 key购买 nike

我正在尝试将 div 附加到当前事件选项卡的页面。但是我收到此错误:

Error during tabs.executeScript: Cannot access contents of url .... 
Extension manifest must request permission to access this host.

我的代码:(show_loader.js)

var dv = document.createElement('div');
dv.id = 'myid';
dv.innerHTML = 'test';
document.body.appendChild(dv);

但是当我输入这段代码时:

document.body.style.backgroundColor = 'green';

它按预期工作,并且当前选项卡的背景颜色发生更改,除了从 popup.js 运行的 show_loader.js 文件中的代码之外没有其他更改,如下所示:

chrome.tabs.executeScript(null, {file: "show_loader.js"});

我的 list 文件也有:

"permissions":
[
"tabs",
"notifications",
"http://*/",
"https://*/"
],

所以我想知道为什么当我尝试执行除设置背景颜色之外的其他操作时会出现上述错误。即使是简单的 alertconsole.log 单独出现在该页面上也会产生与上述相同的错误。

如何解决这个问题?

更新:完成相关代码

list :

{
... name and description ...
"icons":
{
"16" : "img/icon.png",
"48" : "img/48.png",
"128" : "img/128.png"
},

"permissions":
[
"tabs",
"notifications",
"http://*/*",
"https://*/*"
],

"browser_action":
{
"default_icon": "img/icon.png",
"default_title": "Page title",
"default_popup": "popup.html"
}
}

popup.js

// send data to server for saving
$('#btn').click(function(){

chrome.tabs.executeScript(null, {file: "show_loader.js"});

$loader.show();

var data = $(this).closest('form').serialize();

$.ajax({.....});

});

window.onload = function(){
var $loader = $('#loader');
$loader.show();

chrome.tabs.getSelected(null, function(tab) {
//console.log(tab);
$('#url').val(tab.url);
$('#title').val(tab.title);
$loader.hide();
});
};

popup.html

<html>
<head>
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body>

<form action="" method="post" name="frm" id="frm">
<table border="0" cellpadding="3" cellspecing="0" width="370">
......
</table>
</form>

<script src='js/jquery.js'></script>
<script src='popup.js?v=014423432423'></script>

</body>
</html>

show_loader.js

console.log($); // doesn't work

// document.body.style.backgroundColor = 'green'; // WORKS

最佳答案

有效的代码

manifest.json

{
"name": "Manifest Permissions",
"description": "http://stackoverflow.com/questions/14361061/extension-manifest-must-request-permission-to-access-this-host",
"version": "1",
"manifest_version": 2,
"browser_action": {
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"notifications",
"http://*/",
"https://*/"
]
}

popup.html

<html>

<head>
<script src="back.js"></script>
</head>

<body>
<button id="tmp-clipboard">Click Me</button>
</body>

</html>

back.js

document.addEventListener("DOMContentLoaded", function () {
document.getElementById('tmp-clipboard').onclick = function () {
chrome.tabs.executeScript(null, {
file: "script.js"
});
}
});

脚本.js

var dv = document.createElement('div');
dv.id = 'myid';
dv.innerHTML = 'test';
document.body.appendChild(dv);

尝试从代码中删除已弃用的 chrome.tabs.getSelected 并使用 chrome.tabs.query相反。

使用示例

chrome.tabs.query({
"currentWindow": true,
"status": true,
"active": true //Add any parameters you want
}, function (tabs) {//It returns an array
for (tab in tabs) {
//Do your stuff here
}
});

编辑 1

如果您打算捕获当前窗口中他单击浏览器操作的事件浏览选项卡,请使用此代码

chrome.tabs.query({
"currentWindow": true,//Filters tabs in current window
"status": "complete", //The Page is completely loaded
"active": true // The tab or web page is browsed at this state,
"windowType": "normal" // Filters normal web pages, eliminates g-talk notifications etc
}, function (tabs) {//It returns an array
for (tab in tabs) {
$('#url').val(tabs[tab].url);
$('#title').val(tabs[tab].title);
$loader.hide();
}
});

关于javascript - 扩展 list 必须请求访问此主机的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com