Wicket:单击 link 后滚动到某个锚点
Wicket: scroll to certain anchor after clicking a link
我已经从另一个线程询问了 similar question for a form, but now need to scroll to an anchor after the user clicked a certain link - my solution 不起作用。 :(
final Link link = new StatelessLink("linkId") {
@Overrride
public void onClick() {
doSomething();
add(new Behavior() {
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(new HeaderItem() {
@Override
public Iterable<?> getRenderTokens() {
return Collections.singletonList("javascript-anchor");
}
@Override
public void render(Response response) {
response.write("<script type=\"text/javascript\">\n");
response.write("window.location.href='#rules';\n");
response.write("</script>\n");
}
});
}
});
setResponsePage(getClass(), getPageParameters());
}
}
这种方法有什么问题以及如何实现所需的滚动到锚点效果?
我正在使用以下非JavaScript代码:
final Link link = new StatelessLink("linkId") {
@Overrride
public void onClick() {
doSomething();
final String url = RequestCycle.get().getUrlRenderer().renderFullUrl(Url.parse(urlFor(getClass(), getPageParameters()))) + "#rules;
setResponsePage(new RedirectPage(url));
}
}
我已经从另一个线程询问了 similar question for a form, but now need to scroll to an anchor after the user clicked a certain link - my solution 不起作用。 :(
final Link link = new StatelessLink("linkId") {
@Overrride
public void onClick() {
doSomething();
add(new Behavior() {
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(new HeaderItem() {
@Override
public Iterable<?> getRenderTokens() {
return Collections.singletonList("javascript-anchor");
}
@Override
public void render(Response response) {
response.write("<script type=\"text/javascript\">\n");
response.write("window.location.href='#rules';\n");
response.write("</script>\n");
}
});
}
});
setResponsePage(getClass(), getPageParameters());
}
}
这种方法有什么问题以及如何实现所需的滚动到锚点效果?
我正在使用以下非JavaScript代码:
final Link link = new StatelessLink("linkId") {
@Overrride
public void onClick() {
doSomething();
final String url = RequestCycle.get().getUrlRenderer().renderFullUrl(Url.parse(urlFor(getClass(), getPageParameters()))) + "#rules;
setResponsePage(new RedirectPage(url));
}
}