最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

How to call javascript function in ZK - Stack Overflow

programmeradmin5浏览0评论

In ZK framework, inside zul file i want to call javascript function but it does not happens.

<a label="Click" onClick="popUp();">

I have that popUp() function also. But when I click on

<script type="text/javascript">
    function createPopUp(url)
    {
        var w = 600;
        var h = 500;
        var left = (screen.width/2)-(w/2);
        var top = (screen.height/2)-(h/2);
        window.open(url,'name','scrollbars=yes,width='+w+', height='+h+', top='+top+', left='+left);
    }
</script>

But when I click on that link it dispalys following error:

Sourced file: inline evaluation of: `` popUp();'' : 
Command not found: popUp() : at Line: 13 : 
in file: inline evaluation of: `` popUp();'' : popUp ( ) 

In ZK framework, inside zul file i want to call javascript function but it does not happens.

<a label="Click" onClick="popUp();">

I have that popUp() function also. But when I click on

<script type="text/javascript">
    function createPopUp(url)
    {
        var w = 600;
        var h = 500;
        var left = (screen.width/2)-(w/2);
        var top = (screen.height/2)-(h/2);
        window.open(url,'name','scrollbars=yes,width='+w+', height='+h+', top='+top+', left='+left);
    }
</script>

But when I click on that link it dispalys following error:

Sourced file: inline evaluation of: `` popUp();'' : 
Command not found: popUp() : at Line: 13 : 
in file: inline evaluation of: `` popUp();'' : popUp ( ) 
Share Improve this question edited Dec 13, 2012 at 6:56 akjoshi 15.8k13 gold badges106 silver badges122 bronze badges asked Dec 13, 2012 at 6:35 Narayan SubediNarayan Subedi 1,3432 gold badges21 silver badges46 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 8

To solve this problem I found below way:

<a label="Click" xmlns:w="http://www.zkoss/2005/zk/client" w:onClick="createPopUp('http://www.facebook./prabhatsubedi');"/>

As an alternative, if you want to achieve this in java, rather than .zul file, you can use

label.setWidgetListener(Events.ON_CLICK, "popUp();");

as indicated here with javadoc

As another alternative, it's also possible to call Javascript code from the server side using Clients.evalJavaScript. So you would place it in an event listener.

Example

Java:

@Command
public void createPopUp() {
    Clients.evalJavaScript("createPopUp('http://www.facebook./prabhatsubedi');");
}

Zul:

<a label="Click" onClick="@mand('createPopUp')">

Addendum to @Narayan-Subedi's answer

You can declare the client namespace once at the top of your file and use it multiple times:

<zk xmlns:n="native" xmlns:c="client">
    <a label="Click" c:onClick="createPopUp('http://www.facebook./prabhatsubedi');"/>
</zk>
发布评论

评论列表(0)

  1. 暂无评论