Как переопределить событие ошибки window.location?

Общая проблема

В Javascript мне нужно получать уведомление, когда возникает ошибка при загрузке URL-адреса, и отменять поведение по умолчанию. Например, при выполнении следующей команды в iOS Safari ...

window.location = 'http://pageDoesNotExist.badFormatting';

... появится это предупреждающее сообщение ...

mobile safari canno open page

Я хотел бы прикрепить прослушиватель для такой ошибки и сделать что-нибудь вместо показа уродливого окна предупреждения.

Моя конкретная проблема

Когда пользователь нажимает кнопку, мне нужно запустить приложение, если оно установлено, иначе мне нужно открыть 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
);

Проблема в том, что первое window.location открывает неприятное окно предупреждения, когда приложение не установлено. Затем код вернется в App Store. Когда пользователь возвращается из App Store обратно в Safari, уродливое окно предупреждения все еще присутствует. Насколько мне известно, window.onerror не запускается в мобильном Safari.

17
задан Community 23 May 2017 в 12:26
поделиться