Проблемы, пересекающие границу между защищенным пространством выполнения greasemonkey и небезопасной землей окна - PullRequest
0 голосов
/ 18 мая 2010

Вот моя проблема: Я зарегистрировал некоторые обратные вызовы на веб-странице, управляемой событиями Yahoo (просмотры рынка betfair.com), и отслеживаю события betsPlaced с помощью обработчика.

Пока все просто.

Следующим этапом является возвращение события обратно в страну обезьян, и, хотя я знаю, что из пространства «жирных денег» вы можете вызвать unsafeWindow.stuff, обратная операция (по замыслу) отсутствует.

Поэтому, если я хочу отправить содержимое события, скажем, через очередь cometd, моя тщательно настроенная среда jquery, greasemonkey, YUI2, betfair завершится неудачно, сказав мне, что процессы unsafeWindow не могут вызвать GM_ajax. Это, безусловно, безопасно и разумно, но в основном мешает мне делать то, что я хочу.

Кто-нибудь пытался сделать это (не обращая внимания на кометд, просто общие вызовы AJAX) и добился успеха?

Я смотрел на такие страницы: http://wiki.greasespot.net/0.7.20080121.0%2B_compatibility но он не работает для всех вызовов.

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Это не кажется мне понятным. Почему нельзя перехватить события с конца GM с помощью addEventListener(), preventDefault(), stopPropagation() и т. Д.?

Во всяком случае, в худшем случае, вы не можете сделать что-то подобное?

  1. Создайте скрытый iframe, div или что-то еще и попросите GM отслеживать его на предмет изменений DOM.
  2. Записать захваченную информацию о событии в этот узел.
  3. Затем Greasemonkey анализирует данные и использует GM_ajax по своему усмотрению.
0 голосов
/ 19 мая 2010

Использование setTimout, как объясняет та страница, на которую вы ссылались в вики Greasespot, должно работать, я полагаю, вы неправильно реализовали эту работу.

...