@LemanRass09

Как получить доступ к переменным из html страницы из userscript`a для этой же самой страницы?

Пишу userscript для одного сайта.
Есть кнопка:
<button id="withdrawbtn" class="full_btn" ng-click="market.checkout()">Withdraw</button>


Предположим что мне ее нужно продублировать в userscript`e.
(О способе типа $("#withdrawbtn").click(); я в курсе, но суть в том что бы понять ответы на следующие вопросы)

Во-первых: не совсем ясно что за объявление события в виде ng-click="" ну да не суть важно. Просто впервые встречаю вот и заинтересовало.
Во-вторых: в качестве аргумента onclick ивента идет функция market.checkout(). Эту штуку мне нужно как то суметь вызвать из userscript`а. Но из области видимости userscript`a переменной market разумеется на существует. За то она существует на странице где запускается этот userscript. Я думаю должен быть способ использовать переменные из html страницы где запускается userscript непосредственно из тела userscript`a.

Заранее спасибо за помощь.
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
@Sayonji
1. Это директива для Angular js, в данном случае market это не глобальная переменная, а свойство скоупа контроллера, который используется этой кнопкой. Получить скоуп, если повезёт, можно вот так. А если не повезёт — если девелопер выключил debug режим — то я вижу только совсем запарный способ, например, создать юзерскрипт, выполняемый на document-start, который установит перехватчик изменения поля angular в window и подправит его код. Например, подменит метод .contoller() так, что он будет переданную функцию оборачивать в еще одну, сохраняющую скоуп в какой-нибудь глобальный массив.
2. Какие у вас права выданы юзерскрипту? По умолчанию, как минимум в firefox, глобальные переменные доступны. Если включен любой grant, то их по-прежнему можно получать через свойства unsafeWindow.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@LemanRass09 Автор вопроса
Мне подошел способ под названием "если повезёт".
Могу ли я поинтересоваться чем я обязан такому везению?
В смысле по каким причинам у меня это сработало и почему оно могло не сработать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы