JavaScript / jQuery检查断开的链接

我开发了一个小型的Javascript / jQuery程序来访问内部使用的pdf文件的集合。 如果文件实际存在,我想要显示pdf文件的信息div。

有没有一种方法来编程确定文件的链接是否被破坏? 如果是这样,怎么样?

任何指导或build议是适当的。

如果这些文件位于同一个域中,那么您可以使用AJAX来testing它们的存在,如Alex Sexton所说; 然而,你不应该使用GET方法,只是HEAD ,然后检查期望值(200,或者只是小于400)的HTTP状态。

以下是一个相关问题提供的简单方法:

 function urlExists(url, callback) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { callback(xhr.status < 400); } }; xhr.open('HEAD', url); xhr.send(); } urlExists(someUrl, function(exists) { console.log('"%s" exists?', someUrl, exists); }); 

如果文件不在外部网站上,你可以尝试为每个文件做一个Ajax请求。 如果它返回失败,那么你知道它不存在,否则,如果它完成和/或需要比给定的阈值更长的时间返回,你可以猜测它存在。 这并不总是完美的,但通常'filenotfound'请求很快。

 var threshold = 500, successFunc = function(){ console.log('It exists!'); }; var myXHR = $.ajax({ url: $('#checkme').attr('href'), type: 'text', method: 'get', error: function() { console.log('file does not exist'); }, success: successFunc }); setTimeout(function(){ myXHR.abort(); successFunc(); }, threshold); 

问题在于JavaScript具有相同的原始策略,因此您无法从其他域中获取内容。 这是不会改变的(赞成17票)。 我认为你需要它的外部链接,所以这是不可能的.js …

像塞巴斯蒂安说,由于相同的产地政策,这是不可能的。 如果网站可以发布(临时)在公共领域,您可以使用其中一个链接检查服务。 我落后于checkerr.org

你可以$.ajax它。 如果文件不存在,你将得到404错误,然后你可以在错误callback中做任何你需要的(UI方式)。 这取决于你如何触发请求(计时器?)当然,如果你也有能力做一些服务器端编码,你可以做一个单一的AJAX请求 – 扫描目录,然后返回结果,如说JSON。

Interesting Posts