Возможный дубликат:
доступ содержимое iframe из скрипта содержимого расширения Chrome
Я пытаюсь манипулировать частью iframe на веб-странице через расширение Chrome.
Каждый раз, когда я это делаю, я получаю сообщение об ошибке «Небезопасная попытка JavaScript получить доступ к фрейму с URL-адресом». Прочитав документацию по расширению Chrome, я понял, что должен иметь возможность запрашивать разрешения сделать это в моем manifest.json. Но ничто из того, что я сделал, кажется, не позволяет мне сделать это.
Мой манифест.json:
{
"name": "Manipulate an iframe",
"description": "Test to manipulate an iframe",
"version": "1.0",
"background": { "scripts": ["background.js"] },
"permissions": [
"tabs",
"http://*/",
"https://*/",
"<all_urls>"
],
"browser_action": {
"name": "Modify iframe",
"icons": ["icon.png"]
},
"manifest_version": 2
}
Мой фон.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { allFrames:true, runAt:"document_end", file: "jquery-latest.min.js" }, function() {
chrome.tabs.executeScript(null, { allFrames:true, runAt:"document_end", file: "content-script.js" });
});
});
Мой контент-script.js:
$('.container').css('width','98%');
$('#myPage iframe').contents().find('#code').unwrap()
Размер контейнера изменяется правильно, когда я нажимаю кнопку расширения, но я не могу коснуться iframe. Мне кажется, что я дал все разрешения, которые мог, так что где-то еще мне нужно указать разрешения?
Редактировать :
Я нашел этот ответ полезным для понимания различных типов сценариев в расширении Chrome: https://stackoverflow.com/a/9916089/1698152
Помеченный повторяющийся ответ: доступ к содержимому iframe из сценария содержимого расширения Chrome было достаточно, чтобы ответить на мой вопрос.
Вместо того, чтобы пытаться внедрить во все фреймы через tabs.executeScript, я внедрил сценарии содержимого во все фреймы, определив их в манифесте. Затем я смог вызывать функции в этих сценариях из сценария фоновой страницы посредством передачи сообщений.
Однако я до сих пор не понимаю, почему это отличается от того, что я уже делал.