如何在Vaadin中加载页面后加载js函数

时间:2015-10-15 05:29:29

标签: vaadin vaadin7

我试图在页面完全加载到vaadin后加载我的脚本标记或一些jquery函数。我使用javascript注释来加载我的外部js。像这样 @JavaScript( “vaadin://themes/custom/resources/js/custom.js”);

在html中创建页面加载或dom对象后,有什么方法可以调用一些js函数。

2 个答案:

答案 0 :(得分:0)

是的,有。试试这种方法:

import com.vaadin.ui.JavaScript;
...     
StringBuilder script = new StringBuilder();
script
    .append("var head = document.getElementsByTagName('head')[0];")
    .append("var script = document.createElement('script');")
    //...do other stuff to set up the "script" tag (add content, source, whatever)
    .append("head.appendChild(script);");
JavaScript.getCurrent().execute(script.toString());

如果您在页面完全加载之前执行此操作,那么一切都很好。但是如果你想在事后(通过一些事件或点击监听器)这样做,你还必须使用Vaadin push将JavaScript推送到客户端。像这样:

import com.vaadin.ui.UI;
...
UI.getCurrent().access(new Runnable()
{
    @Override
    public void run()
    {
        //code from above that leads to JavaScript.getCurrent().execute(...)
        UI.getCurrent().push();
    }
});

当然,这假设您在Vaadin应用程序中启用了推送功能。参考https://vaadin.com/book/-/page/advanced.push.html

答案 1 :(得分:-1)

根据the docs,在custom.js

中添加以下内容
$(document).ready(function() {
    //call your function
});