Не удается получить доступ к содержимому страницы при попытке добавить Dom в расширение chrome: // URL - PullRequest
0 голосов
/ 16 января 2019

Мое расширение 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: //

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...