Я думаю, что причина того, что скрипт содержимого не загружается для iframe редактора, даже если вы указали all_frames
, заключается в том, что скрипты контента применяются только к iframes, которые присутствуют в разметке, когда загружается содержащая страница.
В случае страницы gmail на странице есть несколько iframes, некоторые из которых присутствуют в разметке содержащей страницы (к которой применяется скрипт содержимого), а затем - для редактора,который создается JavaScript после загрузки страницы.
Даже если вы попытаетесь подождать, пока JavaScript на странице загрузит iframe для редактора, JavaScript в скрипте содержимого не сможет получить доступэто связано с тем, что доступ к объекту contentWindow в iframe не разрешен в скриптах содержимого .
. Возможно, в конечном итоге будет внедрен файл JavaScript в DOM, который затем выполнит логику, которую вы используете вскрипт контента.
Скрипт контента может выглядеть примерно так:
document.body.appendChild(document.createElement("script")).src = "http://external/file/javascript.js";
Тогда содержимое удаленного файла JavaScript может попытаться получить доступ к редактору iframe, вам может понадобиться использовать setInterval до создания элемента.
// These are the IDs gmail uses, each mail app would be different
document.getElementById("canvas_frame").contentWindow.document.getElementById(":nt")