2015-07-08 3 views
3

UPDATE 07.14.15 Потеря всей надежды ... Я предполагаю, что мое исправление будет связано с javascript, но я этого не знаю. Мой текущий код останавливает мою HTML-цель = «Бланки» от работы?Открыть ссылку из веб-приложения в новое окно Safari в iOS 8

Я делаю HTML/CSS-приложение, которое загружается на iPad Mini. Это простой сайт с 30 + страницами с текстом и изображениями. Я использовал этот JavaScript, чтобы сделать все открытые моей HREF внутри приложения:

$(document).ready(function(){ 
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; 
    } 
    }); 
    } 
    }); 

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

ТЕПЕРЬ Мне нужно, чтобы эта связь ONE открывалась в Safari (ей нужно было бы открыть Safari и переключиться на это окно).

мишень = «_blank» не работает, или отн = «внешний»

Как у вас есть ссылки, которые открываются в веб-приложения и другие ссылки открыть в Safari?

Этот вопрос How to open Safari from a WebApp in iOS 7 похож на мой, но исправление не будет работать для меня, и я сейчас в iOS 8.

ответ

3

Я нашел ответ! Отсюда https://gist.github.com/kylebarrow/1042026

Этот сценарий в голове

<script> 
// Mobile Safari in standalone mode 
if(("standalone" in window.navigator) && window.navigator.standalone){ 

    // If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true 
    var noddy, remotes = false; 

    document.addEventListener('click', function(event) { 

     noddy = event.target; 

     // Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML 
     while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") { 
      noddy = noddy.parentNode; 
     } 

     if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes)) 
     { 
      event.preventDefault(); 
      document.location.href = noddy.href; 
     } 

    },false); 
} 
</script> 

и стандартный HTML для ссылок

<a href="http://extneral" target="_blank">your link</a> 

Таким образом местные ссылки под веб-приложений по-прежнему открываются в том же окне, но внешний http: // ссылки откроются в Safari

+0

Подтверждено работать в iOS 9.2 – Nurp

+0

Надеюсь, это полезно для тех, кто использует ** рельсы **. Просто добавьте 'remote: true', например:' link_to "hello", hello_path, remote: true'. Он работал для меня с iOS 9.2 и рельсами 4.2 – Horacio

Смежные вопросы