Как я могу обойти политику того же происхождения для расширений iframe для Chrome?

Возможный дубликат:
доступ содержимое 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, я внедрил сценарии содержимого во все фреймы, определив их в манифесте. Затем я смог вызывать функции в этих сценариях из сценария фоновой страницы посредством передачи сообщений.

Однако я до сих пор не понимаю, почему это отличается от того, что я уже делал.


person bmurr    schedule 05.10.2012    source источник
comment
Эти разрешения дают вам возможность делать междоменные ajax-запросы. Я не верю, что это дает вам разрешения на межфреймовые сценарии. iframe должен обслуживать контент в том же домене, что и ваша страница. developer.mozilla.org/en-US/docs/HTML/ Элемент/iframe#Сценарии   -  person Adam    schedule 05.10.2012
comment
@ Адам Конечно, я как-то могу это сделать. Возможно, мне следует попытаться сделать это через Chrome API?   -  person bmurr    schedule 05.10.2012