Доступ к iframe из расширения Chrome-контента script

Я пишу расширение Chrome, которое необходимо изменить при загрузке популярного веб-приложения. К сожалению, большая часть пользовательского интерфейса этого веб-приложения отображается внутри iframe, и хотя адрес этого iframe соответствует объявлению соответствия content_scripts, пользователь script только вызывается для верхнего кадра.

В: Есть ли способ доступа к HTML, отображаемому внутри iframe, из расширения содержимого Chrome? Если да, какие разрешения и другие варианты манифеста следует указать? Спасибо.

Ответы

Ответ 1

Я решил проблему. Следующий параметр должен быть указан в разделе content_scripts манифеста. Json: "all_frames": true. Без него script применяется только к верхнему кадру.

//Иногда требуется только RTFM.

Ответ 2

Даже "all_frames": true, похоже, не помогает в случае iframe без @src. Это обсуждается в ошибке http://code.google.com/p/chromium/issues/detail?id=20773, которая также охватывает некоторые обходные пути, включая получение contentDocument элемента iframe на исходной странице, например. $('a', $($("#canvas_frame")[0].contentDocument)).

Эта ошибка не является именно той проблемой, с которой вы столкнулись (вы хотели загрузить свой контент script внутри iframe, а не взаимодействовать между iframe и внешним фреймом), но я думаю, что большинство людей, у кого есть одна из проблем, есть и другой.