Ant*_*nio 10 javascript java gwt image prefetch
我尝试了以下代码:
RootPanel root = RootPanel.get("root");
root.clear();
final FlowPanel p = new FlowPanel();
root.add(p);
for (int i=0; i<20; ++i) {
String url = "/thumb/"+i;
final Image img = new Image(url);
img.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
p.add(img);
}
});
Image.prefetch(url);
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用.我错过了什么吗?
仅当图像附加到DOM时,才会调用图像加载处理程序.所以你必须在loadHandler之外的DOM中添加图像:
p.add(img);
img.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
//do some stuff, image is loaded
}
}
Run Code Online (Sandbox Code Playgroud)
斯坦说的有道理。
我认为问题是由于某种原因没有调用 LoadHandler。我总是在没有 LoadHandler 的情况下进行管理,但我通常根据 JavaDoc 演示添加一个 errorHandler,如果加载失败,则会触发该错误处理程序。这应该有效:
final Image img = new Image();
img.addErrorHandler(new ErrorHandler() {
public void onError(ErrorEvent event) {
// Handle the error
}
});
img.setUrl(url);
p.add(img);
Run Code Online (Sandbox Code Playgroud)
请参阅 GWT Javadoc 中的示例: http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/user/client/ui/Image.html