如何检测window.location是否失败?

时间:2013-08-23 13:31:30

标签: javascript javascript-events window.location

如何检查对window.location的调用是否失败,因为给定的URL无效等?是否有一些事件我可以在窗口对象上或其他可以捕获它的对象上设置?

3 个答案:

答案 0 :(得分:9)

最后使用“解决方法”使其工作,这不是我最初希望的通用解决方案:

我正在使用的事实是我尝试打开的链接是移动设备上的自定义URL方案(例如myxx:// localhost),如果失败,我想要执行的操作是重定向到标准appstore URL(特定于操作系统)。解决方法尝试打开自定义URL,如果失败,超时功能会在不久之后启动,并打开另一个URL:

setTimeout(function() { window.location=alternateUrl; }, 25);
window.location = customUrl;

缺点是当customURL失败时,标准的safari浏览器会显示一个消息框,表明该网站无法打开,但至少它仍然会将用户重定向到appstore。

答案 1 :(得分:3)

不太可能,因为在执行window.location = someURL时,在对URL进行测试之前,会从窗口中删除您的文档。您没有剩余的代码可以测试它是否有效。

如果链接位于同一个源,您可以发出XMLHttpRequest来测试该页面是否可访问但似乎没有办法测试页面是否因为交叉原始请求或因为URL错误。

对于一般文档,我不知道是否可以测试外源页面是否可访问(但可以使用onload事件处理程序对图像进行测试)。

答案 2 :(得分:1)

您可以使用ajax检查页面是否存在。没有测试代码,但它应该工作。

var rekuest= new XMLHttpRequest();  
rekuest.open('GET', 'http://www.thisdoesnotexits.org', true);  
rekuest.send();  
if (rekuest.status === "404") {alert("not exist!"); }