Мобильное сафари - подавить предупреждение о неподдерживаемом протоколе - PullRequest
3 голосов
/ 29 апреля 2010

Я создаю сайт для iPhone и использую нативное приложение (cliqcliq Quickpick) для загрузки фотографий. Я использую скрипт, подобный следующему, чтобы проверить, установлено ли приложение. Основная идея заключается в том, чтобы отправить пользователя на пользовательский URL-адрес, если приложение там, оно запускается, если его нет, URL-адрес должен игнорироваться, и пользователь перенаправляется в App Store. Ниже приведен скрипт:

window.launchQuickpic = function() {
    var start = new Date();
 setTimeout(function() {
     if (new Date() - start > 2000) {
     return;
    }
    window.location = 'http://www.cliqcliq.com/quickpic/install/';
}, 1000);

    var getParams = [...];
    window.location = 'vquickpic://?' + getParams.join('&');
};

Если нативное приложение не установлено, я получаю окно с предупреждением о том, что Safari не распознает пользовательский URL. После того, как пользователь нажимает «ОК», он работает как положено. Но предупреждение очень раздражает.

Я пытался окружить код window.location = кодом try / catch. Не помогло.

Ответы [ 3 ]

0 голосов
/ 04 октября 2010

ИЛИ может быть, вы могли бы попробовать Opera Mini в этом отношении

0 голосов
/ 20 февраля 2014

У меня пока нет этой работы, но я думаю, что это то, что вы должны исследовать. Я считаю, что это подавит сообщение.

window.onerror = function(msg, url, linenumber) { return true; }

Я также где-то читал, что пользователь добился успеха, выполнив что-то похожее на приведенное выше, но вместо того, чтобы вернуть true, он переключил бы window.location обратно в правильное местоположение, такое как about: blank. Хотя они использовали iframe в этой реализации.

0 голосов
/ 29 апреля 2010

Если я правильно понимаю, вы видите ожидаемое поведение.

Если приложение не установлено, то система не знает, что оно должно делать с URL-адресом, начинающимся с vquickpic: //. Вот почему вы получаете сообщение об ошибке.

Я полагаю, что вы видите, что сначала вы устанавливаете window.location в 'http://www.cliqcliq.com/quickpic/install/', но прежде чем загрузка завершится, вы пытаетесь переключиться в window.location в' vquickpic: // '. Это приводит к ошибке, и веб-просмотр продолжает загружать первый URL, когда вы отключаете предупреждение.

Основная проблема заключается в том, что ошибка исходит от самой ОС iPhone, которая недоступна из javascript внутри веб-страницы. Веб-страница не может спросить iPhone, установлено ли на нем определенное приложение или можно ли выполнить определенную операцию.

Я думаю, что лучшее, что вы можете сделать, - это сказать пользователю, что, щелкнув по ссылке, вы попытаетесь запустить нативное приложение, если оно установлено, но если они получат сообщение об ошибке, им нужно закрыть его и нажать другую ссылку на странице, чтобы установить приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...