![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Elerond |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Есть сторонний сайт. В коде страницы функция wm.makeRequest({params: {blocks: ['street_market_body'], wblocks_params: $H({street_market_body: $H({booth_id: '8', room: 'buy_room'})})}}) повешенная на onclick.
Использую Greasemonkey. Как можно вызвать эту функцию, прямой вызов не работает, консоль говорит что такой функции нет. С самой консоли она конечно же вызывается. Подгружать файл js с этой функций смысла нет, очень много зависимостей. --------------------
Мой блог |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
А можете собрать минимальный пример, который иллюстрировал бы проблему?
Возможно, вы вызываете функцию слишком рано? Попробуйте вызвать ее в обработчике события load объекта window. |
|||
|
||||
| Elerond |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Amphiluke, не рано это точно.
После загрузки страницы, создается кнопка, при нажатии на которую обрабатывается функция , которая в свою очередь должна запустить проблемную. --------------------
Мой блог |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Так. Еще раз. На чужом сайте есть кнопка вида примерно следующего, как я понял:
Правильно? А что будет, если вы вызовете клик на этой кнопке программно, с помощью метода click()? |
|||
|
||||
| Elerond |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Код
А программно я не пробовал, мне казалось вызвать функцию более логичным подходом. --------------------
Мой блог |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Насколько я помню, скрипты Greasemonkey выполняются в обособленной от основной страницы области видимости, так что прямое взаимодействие с функциями, определенными в документе, вполне может быть затруднено.
Есть еще один (нерекомендованый, в общем-то) способ обхода этого — использование объекта unsafeWindow. Попробуйте вызвать метод через него
Это сообщение отредактировал(а) Amphiluke - 13.8.2011, 19:42 |
|||
|
||||
| Elerond |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Попробовал. Консоль выдала ошибку:
если смотреть куда он ссылается то это строка 145
из
Похоже надо искать совсем другой подход в решении этого вопроса --------------------
Мой блог |
||||||
|
|||||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Ну, блин.
Видимо, к $H (как и к другим глобальным свойствам window) тоже надо обращаться через unsafeWindow.
|
|||
|
||||
| Elerond |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Amphiluke, так у меня нету его, это функция похоже со страницы сайта, вообще непонятно когда и где она вызывается.
Это сообщение отредактировал(а) Elerond - 13.8.2011, 20:11 --------------------
Мой блог |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Вообще, да. Как уже сказал, unsafeWindow не рекомендовано к использованию, ибо «открывает некоторые дыры безопасности» в скрипте, как выразились в документации. Программная генерация клика — вполне так ничего решение, ИМХО. По крайней мере, безопаснее. Добавлено через 1 минуту и 35 секунд
Ну понятно, что со страницы сайта. Так ведь и объект wm и его метод makeRequest тоже со страницы сайта. Не? |
|||
|
||||
| Elerond |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Amphiluke, makeRequest со страницы, а $H уже зарыта где то в подключаемых многочисленных скриптах на этой странице. Искать не стал ее там. Попробую сделать регенерацию клика. В Greasemonkey оно вроде тоже не просто так работает.
--------------------
Мой блог |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Почему? Должно все нормально быть.
Вот они сами примеры приводят для этого: Generate Click Events. Это сообщение отредактировал(а) Amphiluke - 13.8.2011, 20:24 |
|||
|
||||
| Elerond |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 18.6.2007 Репутация: нет Всего: 3 |
Amphiluke, Огромное спасибо. Работает.
--------------------
Мой блог |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |