如何检测window.location是否失败

How do I detect if window.location failed?

本文关键字:window location 是否 失败 检测 何检测      更新时间:2023-09-26

如何检查对window.location的调用是否因给定URL无效等原因而失败?我可以在窗口对象或其他对象上设置一些事件来捕捉这个吗?

最终使用了一种"变通方法",而不是我最初希望的通用解决方案:

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

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

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

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

如果链接在同一来源,您可以发出XMLHttpRequest来测试页面是否可访问,但似乎没有办法测试页面是否仅由于跨来源请求或URL错误而不可请求。

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

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

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