Вызов функции JavaScript, определенной в KRL, из-за пределов закрытия KRL - PullRequest
2 голосов
/ 12 января 2011

Я определяю функцию Javascript в моем глобальном блоке KRL, которую я хочу вызывать, когда пользователь нажимает на ссылку.Вот соответствующие части набора правил:

global {
  emit <|
    function clear_hold() {
      app = KOBJ.get_application("a421x26");
      app.raiseEvent("clear_hold");
    }

  |>;
}

rule add_link_to_clear_hold {
  select when pageview ".*"
  pre {
    clear_div = << <div id="clear_hold">
      <a href="javascript:clear_hold()">Clear Hold</a>
      </div> >>;
  }
  {
    append("body", clear_div);
  }

rule clear_the_hold {
  select when web clear_hold
  {
    replace_html("#clear_link", "<div id='clear_link'>Not on hold</div>");
  }
  always {
    clear ent:hold;
  }
}

Когда я нажимаю на ссылку, я получаю сообщение об ошибке, что clear_link не определено.

Что мне нужно сделать, чтобы позвонитьмоя функция JavaScript?

Ответы [ 2 ]

5 голосов
/ 12 января 2011

Рекомендуется использовать следующий метод разделения имен для присоединения функций JavaScript к объекту KOBJ, чтобы избежать конфликтов с другими приложениями, которые может запускать пользователь.

KOBJ.a60x33.clear_hold = function() { 
  KOBJ.log('...wohoo! You found me!'); 
}

Функция может быть вызвана с помощью

KOBJ.a60x33.clear_hold();
3 голосов
/ 12 января 2011

Функция определена внутри замыкания KRL, но я звонил извне замыкания. Чтобы сделать его видимым снаружи, я добавил его в KOBJ после определения функции

KOBJ.clear_hold = clear_hold;

Тогда позвонить по ссылке:

href="javascript:KOBJ.clear_hold()
...