如果存在其他URL,则通过javascript确定

时间:2012-10-09 12:50:01

标签: javascript

我正在使用提供图像的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);

如果请求失败,我只是不希望用户坐在旁边。如果失败,则网址将完成其加载 - 但是,不会显示任何图像。任何指导将非常感谢!谢谢!

凯尔

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分: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";