Доступны ли расширения 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?), Если вы хотите не отставать от них.