繁体   English   中英

Javascript 404检查锚标记单击

[英]Javascript 404 check on anchor tag click

我需要实现仅JavaScript的解决方案,该解决方案将覆盖默认的href行为,请检查href位置是否存在,然后重定向到该位置或404.html。 到目前为止,我想出了这个:

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

document.onreadystatechange = function() 
{
    var anchorElements = document.getElementsByTagName('a');
    for (var i in anchorElements)
        anchorElements[i].onclick = function() 
        {
        if (UrlExists(this.href)) {window.location=this.href; }
        else {window.location='404.html'=;}
                return false;
            }
}

但是,如果UrlExists() ,则默认行为不会被覆盖。 有任何想法吗?

编辑:404检查工作,并且所有链接都在同一个域上非jQuery解决方案也是首选。

// UrlExists函数是从Trip和jAndy复制而来

感谢RobM。 和Script47指出preventDefault是本机函数:

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

document.onreadystatechange = function() 
{
    var anchorElements = document.getElementsByTagName('a');
    for (var i in anchorElements)
        anchorElements[i].onclick = function(th) 
        {
        th.preventDefault();
        if (UrlExists(this.href)) { window.location=this.href; }
        else {window.location='404.html';}
                return false;
            }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM