js检测判断链接是不是有效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js检测判断链接是不是有效相关的知识,希望对你有一定的参考价值。

参考技术A js检测判断链接是有效
解决方案一: XMLHTTP方案

<script language= "javascript">
function getURL(url)
var xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP");
xmlhttp.open("GET", url, false);
xmlhttp.send();
if(xmlhttp.readyState==4)
if(xmlhttp.Status != 200) alert("不存在");
return xmlhttp.Status==200;

return false;

</script>
<a href= "http://www.liehuo.net/aaa.asp " onclick= "return getURL(this.href) "> csdn </a>

缺点: 使用ActiveXObject, 所以是IE Only. 非IE内核浏览器不可用.

解决方案二: jQuery扩展

以下内容参考[1]

主页: http://plugins.jquery.com/project/linkchecker
Demo 页面: http://sidashin.ru/linkchecker/
下载的压缩包内有调用样例.
补充:
如果针对一个具体的URL,光用jQuery,不需要插件可以这样:
$.ajax(
url: 'http://some.url.com',
type: 'GET',
complete: function(response)
if(response.status == 200)
alert('有效');
else
alert('无效');


);本回答被提问者采纳

如何检测链接是不是有效?

【中文标题】如何检测链接是不是有效?【英文标题】:How to detect if a link works?如何检测链接是否有效? 【发布时间】:2014-01-18 04:03:03 【问题描述】:

我需要知道链接是否会打开。

【问题讨论】:

对话在这里***.com/questions/13044805/… 【参考方案1】:

请参阅Maximilian Hoffmann's answer 以获得更强大的解决方案。


这样的方法很常见 - 劫持超时以重定向到不同的 URL。这种方法对你有用吗?

<a id="applink" href="comgooglemaps://?q=Red+Lobster+Billings">Show map</a>

<script type="text/javascript">

var backup = "http://maps.google.com/?q=Red+Lobster+Billings";

function applink(fail)
    return function() 
        var clickedAt = +new Date;
        setTimeout(function()
            if (+new Date - clickedAt < 2000)
                window.location = fail;
            
        , 500);    
    ;


document.getElementById("applink").onclick = applink(backup);

</script>

【讨论】:

如果我无法完成我的想法,这可能很有用,但我真正想做的是确定链接是否会启动应用程序(AKA应用程序是否已安装)在用户点击链接之前。我在想在页面加载时执行一些 javascript 可能适用于此。有什么想法吗?我希望我已经足够清楚了...... 没有询问链接是否有效的界面……您只能尝试并处理结果(不幸的是)。您可以在 bugreport.apple.com 上提交 Mobile Safari 增强请求,但我想这会引发许多隐私问题,这就是 Apple 不允许这样做的原因。 这个解决方案能防止超时弹出吗?如果是,那么它就是正确的解决方案。 嗨 Aaron,我刚刚尝试了 JSFiddle 中的代码,但它似乎没有做任何事情。我做错什么了吗? jsfiddle.net/erea/5APKE/2 即使安装了 Google 地图应用程序,它也会重定向到 fail 网址。两者兼而有之。【参考方案2】:

解决方案是将带有 URL 方案的 iframe 添加到您的页面。如果未安装应用程序,它会静默失败,因此您需要通过计时器检查打开应用程序是否有效。

// detect iOS
if (['iPhone', 'iPad'].indexOf(navigator.platform) > -1) 

  // create iframe with an Apple URL scheme
  var iframe = document.createElement('iframe');
  iframe.src = 'twitter://';

  // hide iframe visually
  iframe.width = 0;
  iframe.height = 0;
  iframe.frameBorder = 0;

  // get timestamp before trying to open the app
  var beforeSwitch = Date.now();

  // schedule check if app was opened
  setTimeout(function() 
    // if this is called after less than 30ms
    if (Date.now() - beforeSwitch < 30) 

      // do something as a fallback

    
  );

  // add iframe to trigger opening the app
  document.body.appendChild(iframe);
  // directly remove it again
  iframe.parentNode.removeChild(iframe);

我写了一个post with a more detailed example,它使用这种方法在 iOS 上打开 twitter 应用程序(如果已安装)。

【讨论】:

这比我的回答要好。我更新了我的答案以链接到这个。【参考方案3】:

没有办法让您知道链接是否有效,但 Safari 有一个名为 Smart App Banners 的东西

<!DOCTYPE html>
<html>
<head>
<meta name="Google Maps" content="app-id=585027354"/> 
</head>

<body>
The content of the document......
</body>

</html>

它的主要作用是检查是否安装了应用程序。如果未安装,用户将被定向到应用商店。如果已安装,用户将能够使用您通常使用 url 方案传递的相关数据从网站打开应用程序。 您可以将 if 用于 Google 地图。

这样做的缺点是它只能在 Safari 上运行,但总比没有好。

【讨论】:

以上是关于js检测判断链接是不是有效的主要内容,如果未能解决你的问题,请参考以下文章

vb,如何检测一个链接是不是有效

js检测链接(URL)是否有效

如何检测链接是不是有效?

js 检测链接是否有效(包含跨域)

如何批量判断excel里面链接的有效性(是不是可以打开)?

js 检测网址是不是能正常访问用js实现,判断指定的url是不是有效,涉及到跨域,返回的状态是0,求大神指教,