11

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

4

3 回答 3

11

最终使用一种“解决方法”让它工作,这不是我最初希望的通用解决方案:

我正在使用的事实是,我试图打开的链接是移动设备上的自定义 url 方案(例如 myxx://localhost),如果失败,我要执行的操作是重定向到标准应用商店 URL(os -具体的)。解决方法尝试打开自定义 URL,如果失败,超时功能会在不久后启动,并打开一个替代 URL:

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

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

于 2013-09-05T08:01:13.583 回答
3

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

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

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

于 2013-08-23T13:34:36.743 回答
1

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

var rekuest= new XMLHttpRequest();  
rekuest.open('GET', 'http://www.thisdoesnotexits.org', true);  
rekuest.send();  
if (rekuest.status === "404") {alert("not exist!"); }  
于 2013-08-23T13:40:20.223 回答