La aplicación iOS UIWebView abre el enlace en Safari

Tengo una aplicación para iOS que solo tiene una vista y que es UIWebView (abre el contenido principal de la aplicación). Me gustaría que click alguna parte (por ejemplo, en una fila de la tabla), la aplicación para abrir un enlace específico en el browser Safari no dentro de UIWebView.

¿Es factible hacerlo sin escribir ningún código de iOS y, en lugar de eso, hacer que JavaScript abra ese enlace en Safari?

Tengo ese código, pero no ayuda en absoluto:

código HTML

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

Código 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); }); 

En algunos casos, puede indicar todos los enlaces en su javascript que tienen target="_blank" , y pasarlos a window.open con el parámetro '_system'. Esto funcionará tanto en iOS como en Android.

 $(document).on('click', 'a[target="_blank"]', function(ev) { var url; ev.preventDefault(); url = $(this).attr('href'); window.open(url, '_system'); }); 

O en su caso, simplemente reemplace a.setAttribute("target", "_blank"); con a.setAttribute("target", "_system");

Esto funcionó para mí en un proyecto antiguo, pero no estoy seguro si todavía funciona (en iOS y Android)

En caso de que la respuesta anterior no le funcione, puede solucionarlo de forma iOS. Para ello, debe implementar el método de protocolo webView:shouldStartLoadWithRequest UIWebViewDelegate donde verificar su 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 shanetworkingApplication] openURL:url]; return NO; } else return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; } 

Hay una restricción con la respuesta anterior, debe implementar el mecanismo de notificación de la aplicación ios desde JQuery, la posible solución se describe aquí: https://stackoverflow.com/a/11633460/3317354