Доступны ли расширения if расширения?

Если я напишу расширение Chrome, которое запускает фрагмент JS на странице, будет ли он работать и в любых iframe, которые я создаю? Если да, применяется ли это для iframes, созданных Javascript после загрузки DOM?

Спасибо!

Ответы

Ответ 1

Да, содержимое расширения Chrome script "может выполняться во всех iframe (которые изначально находятся в HTML при загрузке страницы). Чтобы содержимое script выполнялось во всех фреймах, вам нужно настроить его для этого в расширении манифеста Chrome.json, используя свойство all_frames:

http://code.google.com/chrome/extensions/content_scripts.html

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"],
      "all_frames": true
    }
  ],
  ...
}

Нет, скрипты содержимого НЕ будут выполняться в iframes, динамически загружаемых с помощью JavaScript на странице.

Ответ 2

Ну, это кажется неправильным ответом. Протестировано с динамически создаваемыми фреймами через JavaScript. Chrome внедряет в каждый кадр, будь то статический или динамический.

Ответ 3

Сценарии содержимого, определенные в манифесте"all_frames": true), будут выполняться на вновь созданных iframes. Важно то, что для каждого кадра запускается новая навигация, и на этом этапе запланировано внедрение сценариев содержимого.

Напротив, если вы динамически внедрите код с помощью chrome.tabs.executeScript(), то он будет chrome.tabs.executeScript() только в кадры, присутствующие во время его вызова. Вам понадобится какой-нибудь механизм для обнаружения новых фреймов (наблюдатели мутаций? webNavigation API?), Если вы хотите не отставать от них.