2012-10-09 28 views
0

我正在使用提供图像的servlet。但是,这需要大约30秒。完成后,它将显示在OpenLayers交互式地图上。通过JavaScript确定是否存在另一个URL

我想找出一个方法,用户在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); 

我只是不想让用户坐在如果请求失败。如果失败,网址将完成其加载 - 但是,不会出现图像。任何指导将非常感激!谢谢!

凯尔

+0

如果页面块,而图像正在加载,你可以添加一个'img'元素,然后检查它是什么时候触发它的'load'事件。 –

回答

3

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

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

var img = new Image(); 
img.src = theUrl; 
img.onload = function() { 
    nextStep(this); 
}; 
img.onerror = function() { 
    imgLoadingError(this); 
}; 
+0

这不一定是ajax,因此不会受到相同的原产地政策的影响(由图像目前在某些地图元素中工作的事实证明)。你可以在任何你想要的地方包含'img's。 –

+0

完美的作品!我至少可以证明这个过程正在与此同时进行。谢谢 – Kyle

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"; 
相关问题