2015-07-17 12 views
5

Ho un'app per iOS che ha solo una vista e cioè UIWebView (apre il contenuto principale dell'app). Vorrei quando faccio un clic da qualche parte (ad esempio su una riga della tabella) l'app per aprire il collegamento specifico nel browser Safari non all'interno di UIWebView.L'app iOS UIWebView apre il collegamento in Safari

È possibile farlo senza scrivere alcun codice iOS e invece di fare in modo che JavaScript apra tale collegamento in Safari stesso?

ho thatcode, ma non aiuta affatto:

codice HTML

<tr class='link-to-pdf' data-href='www.example.com'> 

codice JS:

$(".link-to-pdf").click(function() { 

      var a = document.createElement('a'); 
      a.setAttribute("href", this.getAttribute("data-href")); 
      a.setAttribute("target", "_blank"); 

      var dispatch = document.createEvent("HTMLEvents"); 
      dispatch.initEvent("click", true, true); 
      a.dispatchEvent(dispatch); 

     }); 

risposta

1

In alcuni casi, è possibile dì tutti i link nel tuo javascript che hanno target="_blank" e passali a window.open con '_sistema' p Aram. Funzionerà su iOS e Android.

$(document).on('click', 'a[target="_blank"]', function(ev) { 
    var url; 

    ev.preventDefault(); 
    url = $(this).attr('href'); 
    window.open(url, '_system'); 
}); 

O nel tuo caso, è sufficiente sostituire a.setAttribute("target", "_blank"); con a.setAttribute("target", "_system");

Questo ha funzionato per me in un antico Projekt, ma im incerto se funziona ancora (su iOS e Android)

+0

'errore non found' Asset – jose920405

0

Nel caso in cui il la risposta sopra non funziona per te, puoi correggerla in un modo iOS. Per questo è necessario implementare il metodo di protocollo webView:shouldStartLoadWithRequestUIWebViewDelegate dove controllare l'URL.

- (BOOL) webView: (UIWebView *) theWebView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType 
{ 
    NSURL *url = [request URL]; 
    // check URL in your if condition 
    if (...) { 
     //open URL in Safari 
     [[UIApplication sharedApplication] openURL:url]; 
     return NO; 
    } 
    else 
     return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; 
} 

C'è un vincolo con la risposta di cui sopra, è necessario implementare il meccanismo di notifica iOS da JQuery, possibile soluzione è discusso qui: https://stackoverflow.com/a/11633460/3317354

Problemi correlati