5

我用谷歌搜索了这个问题的几个变体,只能在使用 PhoneGap 或 jQuery mobile 的情况下找到答案。但是,我没有使用...只是普通的旧 html 和 javascript。

我正在尝试使用 window.open()... 从全屏网络应用程序启动移动 safari,而不是内联锚。无论我做什么,网址都会在网络应用程序中打开,而不是在 Safari 中。有没有人有什么建议?

谢谢。

4

6 回答 6

2

我花了一段时间,但我能够把这个解决方案拼凑在一起。在 iOS 独立网络应用程序模式中,它使用 jQuery 创建一个链接元素,将其添加到正文中,模拟点击它,然后删除链接。你可以在没有 jQuery 的情况下完成同样的事情,只是需要更多的代码使用简单的 DOM 方法。

if (window.navigator.standalone) {
  var $a = $('<a href="' + url + '" target="_blank"/>');
  $("body").append($a);

  var a = $a.get(0);

  var mouseEvent = a.ownerDocument.createEvent('MouseEvents');
  mouseEvent.initMouseEvent('click');
  a.dispatchEvent(mouseEvent);

  $a.remove();
}
else {
  window.open(url, '_blank');
}
于 2012-06-20T19:41:04.850 回答
1

从 iOS 4.3 开始,我知道的唯一方法是将 转换<div>为 an<a target="_blank">并让默认浏览器处理它。它将新页面启动到外部 Safari 中。

于 2011-05-02T23:14:41.343 回答
1

在 PhoneGap 中,默认情况下所有 URL 都加载到 WebView 中。设置目标或使用 JS 不会破坏您的外部链接脱离该 WebView。为了将外部 URL 加载到 Safari 而不是 PhoneGap 应用程序本身,您需要修改应用程序委托中处理 URL 的方式。

打开您的 PhoneGap 应用程序代码并找到 [projectname]AppDelegate.m ... 通常位于 [projectname]/Classes 文件夹下。

随意修改 shouldStartLoadWithRequest 。这是一个示例实现,它将评估请求并处理要在 Safari 中加载的 HTTP 或 HTTPS 方案(借用自http://solutions.michaelbrooks.ca/2011/02/15/open-external-links-in-safariapp/):

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];

    // Intercept the external http requests and forward to Safari.app
    // Otherwise forward to the PhoneGap WebView
    if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) {
        [[UIApplication sharedApplication] openURL:url];
        return NO;
    }
    else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }
}
于 2011-08-01T21:45:21.303 回答
0

你试过使用window.openNative()吗?

于 2011-03-24T18:04:22.900 回答
0

如果您无法创建标准 HTML 链接,但必须以编程方式打开 Safari(仅使用 Javascript 代码),代码如下:

var a = document.createElement("a");
a.setAttribute('href', facebook);
a.setAttribute('target', '_blank');
a.click();
于 2014-04-17T13:51:10.207 回答
0

你不能使用普通的 A HREF 标签吗?这通常会从 web 应用程序中打开 Safari。

于 2011-04-07T12:47:39.427 回答