Подтвердить что ты не робот

Как вы переопределите событие ошибки 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.

4b9b3361

Ответ 1

Ваше решение здесь.

В принципе, вы можете использовать файлы cookie для определения того, установлено ли ваше приложение или нет.

Ответ 2

Добавьте object с атрибутом width="0" в разметку, используйте URL-адрес страницы в качестве значения атрибута data, затем перейдите в iTunes, если URL-адрес перенаправляется на страницу 404:

/* Find object element */
var hrefobj = document.querySelector("object");

/* Assign protocol string to data attribute of object element */
hrefobj.data = 'myApp://'; 

/* If the assignment fails */
if (hrefobj.data !== 'myApp://')
  {
  /* Redirect the window to the fallback URL */
  window.location = 'http://itunes.apple.com/myAppId';
  }