从KRL闭包之外调用KRL中定义的javascript函数

时间:2011-01-12 20:10:12

标签: krl

我在我的KRL全局块中定义了一个Javascript函数,我希望在用户单击链接时调用该函数。以下是规则集的相关部分:

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 个答案:

答案 0 :(得分:5)

建议使用以下名称间距方法将JavaScript函数附加到KOBJ对象,以避免与用户可能已运行的其他应用程序发生冲突。

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

然后可以使用

调用该函数
KOBJ.a60x33.clear_hold();

答案 1 :(得分:3)

该函数在KRL闭包内定义,但我从闭包外部调用。为了使它在外面可见,我在定义函数

后将其添加到KOBJ
KOBJ.clear_hold = clear_hold;

然后从链接中调用它:

href="javascript:KOBJ.clear_hold()