Автономное веб-приложение для iOS: не открывайте Safari и сохраняйте текущие события кликов
У меня есть мобильное веб-приложение, которое может работать автономно. Чтобы предотвратить открытие ссылок в Safari и сохранить их в веб-приложении, я сделал:
if (("standalone" in window.navigator) && window.navigator.standalone) {
// For iOS Apps
$('a').on('click', function(e){
e.preventDefault();
var new_location = $(this).attr('href');
if (new_location != undefined && new_location.substr(0, 1) != '#' && $(this).attr('data-method') == undefined){
window.location = new_location;
}
});
}
Однако это также не позволяет функционировать существующим событиям click, связанным с a-тегами.
Я попробовал это, но это не работает:
if (("standalone" in window.navigator) && window.navigator.standalone) {
// For iOS Apps
$('a').on('click', function(e){
var ev = $._data(this, 'events');
if(!ev && !ev.click) {
e.preventDefault();
var new_location = $(this).attr('href');
if (new_location != undefined && new_location.substr(0, 1) != '#' && $(this).attr('data-method') == undefined){
window.location = new_location;
}
}
});
}
Любая помощь приветствуется!
1 ответ
Я знаю, что это старый вопрос, так что, возможно, вы уже исправили его, но я все равно отвечу, если это поможет кому-то еще. Перемещение автоматического отмены события дальше вниз должно помочь.
Так:
if (("standalone" in window.navigator) && window.navigator.standalone) {
// For iOS Apps
$('a').on('click', function(e){
var new_location = $(this).attr('href');
if (new_location != undefined && new_location.substr(0, 1) != '#' && $(this).attr('data-method') == undefined){
window.location.href = new_location;
return false; // Cancel the usual link-opening
}
// If the 'if' block above didn't run, process the click as normal
});
}