Ваш код должен работать.
Вот еще один пример, аналогичный вашему, который работает для меня.
ruleset a60x535 {
meta {
name "function-scope-test"
description <<
function-scope-test
>>
author "Mike Grace"
logging on
}
global {
emit <|
function showMeTheMoney() {
alert("42!");
return 42;
}
|>;
}
rule call_global_function {
select when pageview ".*"
{
emit <|
var amount = showMeTheMoney();
alert("amount: "+amount);
function cool() {
alert("yes");
}
|>;
}
}
}
Результаты запуска приложения на example.com с букмарклетом:
Когда KRL генерирует JavaScript для запуска на странице браузера, он помещает код в замыкания, что может привести к неожиданному поведению.В вашем коде и моем примере испускаемый JavaScript работает в одной области видимости, поэтому вызовы функций имеют доступ друг к другу.Если у вас есть JavaScript, отслеживающий нажатие кнопки, которое затем вызывает функцию, генерируемую в глобальном блоке, у вас могут возникнуть проблемы с тем, что функция щелчка не находится в той же области действия, что и глобально генерируемая функция JavaScript.