Hyperlink 如何检测链接是否工作?

Hyperlink 如何检测链接是否工作?,hyperlink,Hyperlink,我需要知道一个链接是否会打开 有关更可靠的解决方案,请参阅 像这样的方法很常见-劫持超时以重定向到不同的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+Bil

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

有关更可靠的解决方案,请参阅


像这样的方法很常见-劫持超时以重定向到不同的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>

var备份=”http://maps.google.com/?q=Red+龙虾+比林斯”;
函数applink(失败){
返回函数(){
var clickedAt=+新日期;
setTimeout(函数(){
如果(+新日期-点击日期<2000){
window.location=失败;
}
}, 500);    
};
}
document.getElementById(“applink”).onclick=applink(备份);

没有办法让你知道链接是否有效,但对于Safari来说,有一种叫做


文件的内容。。。。。。
它的基本功能是检查是否安装了应用程序。如果未安装,用户将被定向到应用商店。如果安装了该应用程序,用户将能够从网站上打开该应用程序,其中包含您通常使用url方案传递的相关数据。 你可以在谷歌地图上使用if


缺点是它只能在Safari上使用,但总比没有好。

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

//检测iOS
if(['iPhone','iPad'].indexOf(navigator.platform)>-1){
//使用Apple URL方案创建iframe
var iframe=document.createElement('iframe');
iframe.src='twitter://';
//直观地隐藏iframe
iframe.width=0;
iframe.height=0;
iframe.frameBorder=0;
//在尝试打开应用程序之前获取时间戳
var beforeSwitch=Date.now();
//计划检查应用程序是否已打开
setTimeout(函数(){
//如果在30毫秒内调用此命令
if(Date.now()-beforeSwitch<30){
//做点什么作为退路
}
});
//添加iframe以触发打开应用程序
document.body.appendChild(iframe);
//直接将其再次移除
iframe.parentNode.removeChild(iframe);
}

我写了一篇文章,使用这种方法在iOS上打开twitter应用程序(如果已安装)。

如果我无法完成我的想法,这可能会很有用,但我真正希望能够做的是在用户点击链接之前确定链接是否将启动应用程序(也就是是否已安装应用程序)。我在想,在页面加载上执行一些javascript可能可以解决这个问题。有什么想法吗?我希望我已经足够清楚了…没有接口询问链接是否有效…您只能尝试并处理结果(不幸的是)。你可以在bugreport.apple.com上提交一个移动Safari增强请求,但我想这会带来一些隐私问题,这就是苹果不允许的原因。这个解决方案会阻止超时出现吗?如果是,那么它就是正确的解决方案。嗨,Aaron,我只是在JSFIDLE中尝试了代码,但它似乎什么都没做。我做错什么了吗?即使安装了谷歌地图应用程序,也会重定向到
fail
url。两者兼而有之。对话就在这里。这比我的答案要好。我更新了我的答案以链接到这个。
<!DOCTYPE html>
<html>
<head>
<meta name="Google Maps" content="app-id=585027354"/> 
</head>

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

</html>