2011-01-12 46 views
2

我在用户单击链接时想要调用的KRL全局块中定义一个Javascript函数。以下是规则集的相关部分:从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函数?

回答

5

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

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

该函数然后可以用

KOBJ.a60x33.clear_hold(); 
+2

我以前使用这种方法调用;它工作得很好。 – 2011-01-13 00:11:04

3

该函数是在KRL闭包中定义的,但是我从封闭外部调用。为了让看得见外面我定义函数

KOBJ.clear_hold = clear_hold; 

然后从链接调用它后,把它添加到Kobj的:

href="javascript:KOBJ.clear_hold()