2010-10-14 2 views
15

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

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

+1

Это подходит вам? http://code.google.com/p/chromium/issues/detail?id=37920 – bzlm

+1

Нет, это не так. В iframe не добавляется расширение, а исходное веб-приложение. – dpq

ответ

38

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

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

+5

RTFM вы сохраняете мой F день –

8

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

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