Вспомогательные команды
Eval
Команда eval предназначена для выполнение кода написаннного на других языках программирования (в данный момент поддерживается только JavaScript (ES5)). Она может выполняться только в контексте блока, поскольку работает с регистром. Однако команда может не только возвращать значение в регистр, но и присваивать значения переменных в JS переменным диггера. Благодаря этому можно получать сразу несколько значений различного толка в пределах одного выполнения. Если ваш JS фрагмент будет работать слишком долго, он будет автоматически прерван. Это сделано для избежания нецелевого использования данного функционала.
Примеры записи:
# ВОЗВРАТ ЗНАЧЕНИЯ В РЕГИСТР
# ОБРАТИТЕ ВНИМАНИЕ ЧТО В ТАКОМ СЛУЧАЕ
# JS КОД ДОЛЖЕН БЫТЬ ОБЕРНУТ В ЗАМЫКАНИЕ И ВОЗВРАЩАТЬ ЗНАЧЕНИЕ
- eval:
routine: js
body: "(function (){return new Date().getTime();})();"
# ПРИСВАИВАНИЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ДИГГЕРА `time` ИЗ ПЕРЕМЕННОЙ JS КОДА `jstime`
- eval:
routine: js
body: "var jstime = new Date().getTime();"
assign:
time: jstime
Примеры использования:
- find:
path: body
do:
# ВЫПОЛНИМ JS КОД КОТОРЫЙ ВОЗВРАЩАЕТ ТЕКУЩУЮ ДАТУ\ВРЕМЯ В UNIX ФОРМАТЕ
- eval:
routine: js
body: "(function (){return new Date().getTime();})();"
# В РЕГИСТРЕ НАХОДИТСЯ: 1476403635606
- find:
path: body
do:
# ВЫПОЛНИМ JS КОД КОТОРЫЙ ПРИСВАИВАЕТ ТЕКУЩУЮ ДАТУ\ВРЕМЯ В UNIX ФОРМАТЕ
# В JS ПЕРЕМЕННУЮ `jstime` И ПРИСВОИМ ЕЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ДИГГЕРА `time`
# КОЛИЧЕСТВО ПЕРЕМЕННЫХ КОТОРЫЕ МОЖНО ПРИСВОИТЬ НЕОГРАНИЧЕННО
- eval:
routine: js
body: "var jstime = new Date().getTime();"
assign:
time: jstime
- variable_get: time
# В РЕГИСТРЕ НАХОДИТСЯ: 1476403635606
Так же можно использовать переменные диггера в коде JS.
Например:
- find:
path: a
do:
- parse:
attr: href
- variable_set: link
- eval:
routine: js
body: "(function (){return '<%link%>' + '?time=' + new Date().getTime();})();"
# В РЕГИСТРЕ НАХОДИТСЯ: http://somelink.com/?time=1476403635606
# ОБРАТИТЕ ВНИМАНИЕ, В ДАННОМ СЛУЧАЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ЗАКЛЮЧЕНО
# В КАВЫЧКИ ДЛЯ ТОГО, ЧТО БЫ ИНТЕРПРЕТАТОР JS КОДА ЗНАЛ ЧТО ЭТО СТРОКА
В следующей главе мы рассмотрим команды, предназначенные для перезагрузки и перечитывания страниц.