使用JavaScript检查服务器上是否存在图像?

使用JavaScript有一种方法可以告诉服务器上是否有资源可用? 例如我有图像1.jpg – 5.jpg加载到HTML页面。 我想每分钟调用一次JavaScript函数,大概做下面的scratch代码…

if "..http://img.dovov.com6.jpg" exists: var nImg = document.createElement("img6"); nImg.src = "..http://img.dovov.com6.jpg"; 

思考? 谢谢!

你可以使用像这样的东西:

 function imageExists(image_url){ var http = new XMLHttpRequest(); http.open('HEAD', image_url, false); http.send(); return http.status != 404; } 

很明显,你可以使用jQuery /类似的来执行你的HTTP请求。

 $.get(image_url) .done(function() { // Do something now you know the image exists. }).fail(function() { // Image doesn't exist - do something else. }) 

您可以使用图像预加载器工作的基本方式来testing图像是否存在。

 function checkImage(imageSrc, good, bad) { var img = new Image(); img.onload = good; img.onerror = bad; img.src = imageSrc; } checkImage("foo.gif", function(){ alert("good"); }, function(){ alert("bad"); } ); 

的jsfiddle

您可以检查图像是否加载:

 var image = new Image(); image.onload = function() { // image exists and is loaded document.body.appendChild(image); } image.onerror = function() { // image did not load var err = new Image(); err.src = '/error.png'; document.body.appendChild(err); } image.src = "..http://img.dovov.com6.jpg"; 

如果有人来到这个页面,想要在一个基于React的客户端上做这个工作,你可以做一些类似于下面的事情,这是React团队的Ben Alpert在这里提供的答案

 getInitialState: function(event) { return {image: "http://example.com/primary_image.jpg"}; }, handleError: function(event) { this.setState({image: "http://example.com/failover_image.jpg"}); }, render: function() { return ( <img onError={this.handleError} src={src} />; ); } 

如果您创build一个图片标签并将其添加到DOM,它的onload或onerror事件应该会触发。 如果发生错误,则服务器上不存在映像。

你可以调用这个JS函数来检查服务器上是否存在文件:

 function doesFileExist(urlToFile) { var xhr = new XMLHttpRequest(); xhr.open('HEAD', urlToFile, false); xhr.send(); if (xhr.status == "404") { console.log("File doesn't exist"); return false; } else { console.log("File exists"); return true; } } 
 $("img").on("load",function(){ alert(" Image Exists...!"); }).on("error", function(){ alert("ERROR"); }); 

演示:@ http://jsfiddle.net/Ns5mU/304/