0

我正在使用一个提供图像的 servlet。但是,生成它需要大约 30 秒。完成后,它会出现在 OpenLayers 交互式地图上。

我正在尝试为 www.test.com 上的用户找到一种方法来确认图像正在处理或已完成,该图像位于 www.test2.com。如果我打开 test2.com,我可以看到页面正在尝试加载。完成后,该图像也会出现在我在 test.com 上的地图上。

但是,我不知道如何测试此图像是否存在。我正在寻找可能像

    if(image exists at http://test2.com) {alert("request is done");

或者可能

    if(http://test2.com is loading) {doing something);

如果请求失败,我只是不希望用户坐在旁边。如果失败,url 将完成加载 - 但是,不会出现任何图像。任何指导将不胜感激!谢谢!

凯尔

4

2 回答 2

3

如果它是不同的服务器,JavaScript 将无法向该服务器发出任何类型的 Ajax 请求以查看它是否存在。您必须在本地域上有一个代理,它可以向第二个域发出头部请求。

如果您要等到图像加载后才能使用它,您始终可以执行图像预加载器,但这将花费全部时间在 onload 事件触发之前渲染图像。

var img = new Image();
img.src = theUrl;
img.onload = function() {
    nextStep(this);
};
img.onerror = function() {
     imgLoadingError(this);
};
于 2012-10-09T12:52:55.790 回答
0

如果您可以控制另一台服务器,则可以在该服务器上放置一个小图像并执行以下操作:(未经测试的代码,直接输入)

var img = new Image();
// Note the order of these two statements
img.onload = function()("The image loaded! Server must be up");
img.src = "http://example2.com/myflag.png";
于 2012-10-09T12:55:25.870 回答