Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wicket 6:页面加载后调用javascript函数_Javascript_Wicket - Fatal编程技术网

wicket 6:页面加载后调用javascript函数

wicket 6:页面加载后调用javascript函数,javascript,wicket,Javascript,Wicket,这看起来很简单,但我找不到一个例子,说明如何在加载页面后(在扩展网页的页面上)从wicket调用javascript函数。有人能举例说明如何做到这一点吗?你可以让javascript帮你做到这一点 window.onload = function () { // do stuff here } 如果您需要javascript函数中wicket页面的参数,可以覆盖renderHead并在那里添加函数: @Override public void renderHead(IHeaderRespons

这看起来很简单,但我找不到一个例子,说明如何在加载页面后(在扩展网页的页面上)从wicket调用javascript函数。有人能举例说明如何做到这一点吗?

你可以让javascript帮你做到这一点

window.onload = function () {
// do stuff here
}
如果您需要javascript函数中wicket页面的参数,可以覆盖renderHead并在那里添加函数:

@Override
public void renderHead(IHeaderResponse response)
{
    super.renderHead(response);
    String bar = "something";
    response.render(JavaScriptHeaderItem.forScript("window.onload = function () {var foo='" + bar + "'}"));
    // or
    response.render(OnDomReadyHeaderItem.forScript("functionToCall(" + bar + ");") ;
}

另一种方法是创建AjaxEventBehavior,如下所示,并将其添加到页面中

AjaxEventBehavior event = new AjaxEventBehavior("onload") {
    @Override
    protected void onEvent(final AjaxRequestTarget target) {
        // do stuff here
        target.appendJavaScript("alert('onload');");
    }
}
add(event);

如问题中所述,wicket的版本是6tried“response.render(OnDomReadyHeaderItem.forScript(“testAlert();”))”)”——适合我。谢谢您可以将其添加到组件中,还是必须将其添加到页面中?添加到组件时似乎不会触发…appendJavaScript(),追加所述函数或JS片段。当在一个反复调用的Wicket函数中使用时,JS代码会被执行多次并线性增加。Wicket 8中的这个解决方案似乎不再有效。Wicket 8还有其他方法吗@安德帕特