2013-06-20 3 views

Antwort

15

können Sie haben Javascript tun, dass für Sie

window.onload = function() { 
// do stuff here 
} 

Wenn Sie die Parameter von Ihrem Wicket Seite in der JavaScript-Funktion benötigen, können Sie renderHead außer Kraft setzen und die Funktion hinzufügen, dass es:

@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 + ");") ; 
} 
+0

versucht "response.render (OnDomReadyHeaderItem.forScript (" testAlert(); "));" - funktioniert bei mir. Vielen Dank! – user1328889

10

Noch ein anderer Um dies zu tun, erstellen Sie AjaxEventBehavior wie folgt und fügen Sie es zu Ihrer Seite hinzu.

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

Das hat bei mir funktioniert. Schön und einfach. Vielen Dank. – user2345093

+1

Können Sie dies zu einer Komponente hinzufügen oder muss es die Seite sein? Scheint nicht zu feuern, wenn zu einer Komponente hinzugefügt ... – Ash

+0

appendJavaScript(), hängt die erwähnte Funktion oder das Stück des JS an. Bei Verwendung in einer Wicket-Funktion, die wiederholt aufgerufen wird, wird der JS-Code mehrfach ausgeführt und linear erhöht. – Srikanta

Verwandte Themen