使用JavaScript检测链接到不存在的网站
Detect links to non-existent websites using JavaScript
我正在尝试使用JavaScript检测网页上的断开链接,我遇到了一个问题。是否有任何方法可以使用客户端JavaScript检测不存在的url,如下所示?
function URLExists(theURL){
//return true if the URL actually exists, and return false if it does not exist
}
//test different URLs to see if they exist
alert(URLExists("https://www.google.com/")); //should print the message "true";
alert(URLExists("http://www.i-made-this-url-up-and-it-doesnt-exist.com/")); //should print the message "false";
由于同源策略,您需要在服务器上创建代理来访问站点并发回其可用性状态—例如使用curl:
<?PHP
$data = '{"error":"invalid call"}'; // json string
if (array_key_exists('url', $_GET)) {
$url = $_GET['url'];
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
$data = '{"status":"'.$httpCode.'"}';
if (array_key_exists('callback', $_GET)) {
header('Content-Type: text/javascript; charset=utf8');
header('Access-Control-Allow-Origin: http://www.example.com/');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
$callback = $_GET['callback'];
die($callback.'('.$data.');'); //
}
}
// normal JSON string
header('Content-Type: application/json; charset=utf8');
echo $data;
?>
现在可以使用要测试的URL对该脚本进行ajax处理,并读取返回的状态,可以是JSON或JSONP调用
我发现的最好的客户端解决方案是加载网站的徽标或favicon并使用onerror/onload,但这并不能告诉我们特定页面是否缺失,只有当网站关闭或删除了他们的favicon/徽标:
function isValidSite(url,div) {
var img = new Image();
img.onerror = function() {
document.getElementById(div).innerHTML='Site '+url+' does not exist or has no favicon.ico';
}
img.onload = function() {
document.getElementById(div).innerHTML='Site '+url+' found';
}
img.src=url+"favicon.ico";
}
isValidSite("http://google.com/","googleDiv")
相关文章:
- 正在将事件处理程序添加到不存在的类
- javascript如果图像不存在don't加载它
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何将一个函数附加到一个不存在的元素上
- 在scala或scalajs Diode中,现有类型中的任何一种都符合“;更新一个没有'还不存在”;
- 查找数组's按属性不存在于另一个数组中的对象
- 用javascript在对象上创建不存在的方法
- 仅当值不为'不存在
- casperjs-css选择器存在,但当单击它时会引发“”;CasperError:无法在不存在的选择器“”上调度mou
- 运行时不存在Javascript函数
- 如何在不影响网站页面速度的情况下在我的网站上使用谷歌字体
- cookie不在网站范围内
- 使用webdriver和selenium验证元素是否不存在
- 如果文件不存在,fs.watch是否有错误处理程序
- 试图把注意力集中在一个不重要的元素上是不是一种糟糕的做法;不存在
- Backbonejs:在视图中渲染的模型,但在集合中不存在
- 如何从网站获得apple touch图标,如果没有;不存在,则显示收藏夹
- 谷歌Chrome扩展-覆盖的内容,不存在的网站
- 使用JavaScript检测链接到不存在的网站