Мое расширение Chrome создает временную страницу .html.Я хочу манипулировать DOM страницы sample.html, которая была создана, но не могу.Я могу манипулировать DOM для любой другой страницы без проблем.Кажется, проблема в том, что моя временная страница .html находится в chrome-extension: //
Сообщение об ошибке: Не проверено runtime.lastError при запуске tabs.executeScript: Невозможно получить доступ к содержимомуurl "chrome-extension: //123/sample.html? id = 100".Манифест расширения должен запрашивать разрешение на доступ к этому хосту.
Примечание: для простоты я предоставил пример кода, который показывает ту же ошибку.После загрузки я могу использовать комбинацию клавиш для вставки div и некоторого текста в любую веб-страницу (Mac-> Cmd + Shift + P или ПК Ctrl + Shift + P)
Я попытался добавить все возможные разрешения идаже web_accessible_resources для manifest.json.(Я не верю, что это проблема).Я пробовал разные способы вставить код в sample.html, вызвав конкретный tabId, activeTab или даже установив значение tabId равным нулю в фоновом файле.Я прочитал stackoverflow, гуглил и осмотрелся, но потерпел неудачу.
manifest.json
{
"manifest_version": 2,
"name": "sample1",
"description": "sample1",
"version": "0.0.1",
"browser_action":
{
"default_title": "sample"
},
"commands":
{
"saveImageCommand":
{
"suggested_key":
{
"default": "Ctrl+Shift+Z",
"mac": "Command+Shift+Z"
},
"description": "Toggle Save Image"
},
"playback":
{
"suggested_key":
{
"default": "Ctrl+Shift+P",
"mac": "Command+Shift+P"
},
"description": "load player Image"
}
},
"permissions": [
"tabs",
"activeTab",
"storage",
"<all_urls>",
"*://*/*"
],
"background":
{
"persistent": false,
"scripts": ["background.js"]
}
,
"web_accessible_resources": [
"chrome-extension://*/sample.html?id=*"
]
}
background.js
chrome.commands.onCommand.addListener(function(command) {
if (command === 'saveImageCommand') {
capturecurrent();
}
if (command === 'playback') {
chrome.tabs.executeScript(null, {
code: 'var divNode = document.createElement("div");divNode.setAttribute("id", "video1Div");var instructions = document.createTextNode("testing");divNode.appendChild(instructions);document.body.appendChild(divNode)'
});
}
});
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.captureVisibleTab(function(screenshotUrl) {
var viewTabUrl = chrome.extension.getURL('sample.html')
chrome.tabs.create({ url: viewTabUrl });
});
});
sample.html
<html>
<head></head>
<body>
<div id="firstDiv">firstDiv</div>
</body>
</html>
Ожидаемые результаты: Для меня, чтобы напрямую взаимодействовать с DOM на странице temp sample.html.
Примечание: Я неНе хочу создавать кнопки для манипулирования DOM непосредственно на странице sample.html.Это побеждает цель этого упражнения.Особенно, поскольку я хочу использовать сочетания клавиш для вызова этой манипуляции с DOM (Mac-> Cmd + Shift + P или ПК Ctrl + Shift + P)
Фактические результаты: Я могувзаимодействовать с DOM на любом обычном веб-сайте с помощью сочетания клавиш, но не sample.html, URL которого начинается с расширения chrome: //