| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > frames undefined, в начале функции |
| Автор: 4epT 27.2.2012, 17:23 |
| Всем привет. Пишу скрипт под плагин greasemonkey (для мозилы) и Tampermonkey (для google chrome). Для мозилы сделал все работет идеально. А вот под chrome проблемы. Суть скрипта в следующем - добавить свою кнопку ко всем прикрепленным файлам в письме (речь о GMail). У них сделано так, что окно с текстом письма это iFrame, я пытаюсь получить к нему доступ через frames[3], в мозиле работает, в хроме не успевает (в хроме уже только после полной загрузки страницы, написав в консоли frame[3], будет видин DOMWindow). Подскажите какие могут быть варинты испаравления этой ситуации ? в какую сторону смотреть ? Код очень запутанный и разобраться в нем будет крайне сложно, поэтому не вижу смысла его постить. Буду рад любым советам =) |
| Автор: Amphiluke 27.2.2012, 18:31 |
| Ну так вы запускайте свой код после окончания загрузки страницы. |
| Автор: 4epT 27.2.2012, 18:33 |
| Каким образом ? У меня код обернут в $(document).ready результат тот же =( |
| Автор: Amphiluke 27.2.2012, 18:35 | ||
Ну, к примеру, так:
|
| Автор: 4epT 27.2.2012, 18:41 | ||||
Так мой код вообще не вызывается |
| Автор: Amphiluke 27.2.2012, 18:53 | ||
| То есть событие "load" окна не возникает? Только что открыл GMail, проверил в консоли. Все нормально срабатывает.
|
| Автор: 4epT 27.2.2012, 19:04 |
| Вставил Ваш пример) Да, событие произошло ... frames там тоже undefined =( Попробовал в интервале ждать пока он будет готов, тоже никаких результатов. |
| Автор: Amphiluke 27.2.2012, 19:16 | ||
А вы можете проверить на отдельном чистом user script`е, выкинув весь посторонний код? Просто прям вот такой скрипт из одной строчки:
Я хз, у меня всё нормально пишет: «object», frames.length = 4. Правда, всё это при написании обработчика через консоль, но по большому счету, какая разница, наверное.. |
| Автор: 4epT 27.2.2012, 19:36 |
| Выводит object, но мне почему то кажется что это не показатель ) так как в моем скрипте frames.length выводит 5 Внесу немного ясности в данный вопрос. У меня через интервал, проверяется измнение урла, как только в урле я вижу что пользователь зашел в письмо, я запускаю свою функцию .. и уже там frames undefined. Может как то можно задержать выполнение функции ? До того момента как будет доступен frames. |
| Автор: 4epT 27.2.2012, 20:01 | ||||||
Выводит DOMWindow object, то есть все хорошо.
Не помогло |
| Автор: Amphiluke 27.2.2012, 20:13 |
Что-то не верю. Единственное, чем отличается вариант с опросом через каждые полсекунды от варианта с 15-тисекундной задержкой, — это то, что в первом варианте о доступности frames станет известно раньше. |
| Автор: 4epT 29.2.2012, 19:11 |
| В общем проблема была в самом хроме .... это его примочки с безопасностью =) он блокирует доступ к frames. Данную "фичу" обойти можно только написаем непосредственно плагина под хром, и самое решение проблемы далеко не самое легкое, поэтому решил пока что на хром забить .. |