你如何覆盖window.location错误事件?

JoJ*_*oJo 17 javascript overriding modal-dialog mobile-safari

一般问题

在Javascript中,我需要在加载URL并覆盖默认行为时收到通知.例如,在iOS Safari上执行以下操作...

window.location = 'http://pageDoesNotExist.badFormatting';
Run Code Online (Sandbox Code Playgroud)

...会弹出此警告信息......

移动safari canno打开页面

我想为这样的错误附加一个监听器并做一些事情,而不是显示一个丑陋的警报框.

我的具体问题

当用户点击按钮时,我需要启动我的应用程序(如果已安装),否则我需要打开App Store才能下载我的应用程序.该接受的解决方案是:

// Attempt to open app
window.location = 'myApp://';

// If app fails to open, will open app store 0.5 seconds later
window.setTimeout(
   function() {
      window.location = 'http://itunes.apple.com/myAppId';
   }, 
   500
);
Run Code Online (Sandbox Code Playgroud)

这里的问题是,window.location当未安装应用程序时,第一个打开丑陋的警告框.然后代码将回退到App Store.当用户从App Store返回到Safari时,丑陋的警报框仍然存在.据我所知window.onerror,不会在移动Safari上启动.

ldi*_*ual 3

您的解决方案就在这里

基本上,您可以使用 cookie 来确定您的应用程序是否已安装。