| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Greasemonkey и вызов функции со страницы |
| Автор: Elerond 13.8.2011, 15:21 |
| Есть сторонний сайт. В коде страницы функция wm.makeRequest({params: {blocks: ['street_market_body'], wblocks_params: $H({street_market_body: $H({booth_id: '8', room: 'buy_room'})})}}) повешенная на onclick. Использую Greasemonkey. Как можно вызвать эту функцию, прямой вызов не работает, консоль говорит что такой функции нет. С самой консоли она конечно же вызывается. Подгружать файл js с этой функций смысла нет, очень много зависимостей. |
| Автор: Amphiluke 13.8.2011, 17:54 |
| А можете собрать минимальный пример, который иллюстрировал бы проблему? Возможно, вы вызываете функцию слишком рано? Попробуйте вызвать ее в обработчике события load объекта window. |
| Автор: Elerond 13.8.2011, 18:06 |
| Amphiluke, не рано это точно. После загрузки страницы, создается кнопка, при нажатии на которую обрабатывается функция , которая в свою очередь должна запустить проблемную. |
| Автор: Amphiluke 13.8.2011, 18:11 | ||
Так. Еще раз. На чужом сайте есть кнопка вида примерно следующего, как я понял:
Правильно? А что будет, если вы вызовете клик на этой кнопке программно, с помощью метода click()? |
| Автор: Elerond 13.8.2011, 19:17 | ||
Код
А программно я не пробовал, мне казалось вызвать функцию более логичным подходом. |
| Автор: Amphiluke 13.8.2011, 19:41 | ||
| Насколько я помню, скрипты Greasemonkey выполняются в обособленной от основной страницы области видимости, так что прямое взаимодействие с функциями, определенными в документе, вполне может быть затруднено. Есть еще один (нерекомендованый, в общем-то) способ обхода этого — использование объекта unsafeWindow. Попробуйте вызвать метод через него
|
| Автор: Elerond 13.8.2011, 19:58 | ||||||
Попробовал. Консоль выдала ошибку:
если смотреть куда он ссылается то это строка 145
из
Похоже надо искать совсем другой подход в решении этого вопроса |
| Автор: Amphiluke 13.8.2011, 20:09 | ||
| Ну, блин. Видимо, к $H (как и к другим глобальным свойствам window) тоже надо обращаться через unsafeWindow.
|
| Автор: Elerond 13.8.2011, 20:11 |
| Amphiluke, так у меня нету его, это функция похоже со страницы сайта, вообще непонятно когда и где она вызывается. |
| Автор: Elerond 13.8.2011, 20:21 |
| Amphiluke, makeRequest со страницы, а $H уже зарыта где то в подключаемых многочисленных скриптах на этой странице. Искать не стал ее там. Попробую сделать регенерацию клика. В Greasemonkey оно вроде тоже не просто так работает. |
| Автор: Amphiluke 13.8.2011, 20:23 |
| Почему? Должно все нормально быть. Вот они сами примеры приводят для этого: http://wiki.greasespot.net/Generate_Click_Events. |
| Автор: Elerond 13.8.2011, 20:30 |
| Amphiluke, Огромное спасибо. Работает. |