Доступны ли расширения Chrome для фреймов? - PullRequest
17 голосов
/ 19 января 2012

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

Спасибо!

Ответы [ 2 ]

35 голосов
/ 19 января 2012

Да, расширение «Chrome Content Extension» может выполняться во всех iframes (которые изначально находятся в HTML при загрузке страницы). Чтобы скрипт содержимого работал во всех фреймах, его необходимо настроить в Chrome Extension manifest.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
    }
  ],
  ...
}

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

3 голосов
/ 24 января 2019

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

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

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