Phonegap - 在Mobile Safari中打开链接

时间:2013-03-11 22:05:37

标签: javascript html cordova

在我将应用程序更新到Cordova 2.5.0之前,我的基本链接已打开到Safari中。现在它只是在我的应用程序视图中加载而不是加载到Safari中。

我有以下代码:  Contact Us by visiting, <a href="http://site.com/contact.php"> our website! </a>

关于我如何解决这个问题的任何想法。

有关详细信息:当我们从Cordova / Phonegap.plist切换到config.xml时,这一切都已开始。

4 个答案:

答案 0 :(得分:5)

1)在safari中打开链接

将代码粘贴到MainViewController.m文件中

- (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 ];
    }
}

2)在InAppBrowser中打开链接

function OpenLink()
                    {
                    alert(adlink); //adlink: http://www.google.com
                        var ref = window.open(adlink, '_blank', 'location=yes');//adlink is url
                        var myCallback = function() { alert(event.url); }
                        ref.addEventListener('loadstart', myCallback);
                        ref.removeEventListener('loadstart', myCallback);
                          }

答案 1 :(得分:4)

  1. 在您的链接中添加target =“_ blank”。 即:

    <a href="http://www.brandonbrotsky.com/" target="_blank"></a>
    
  2. 确保访问权限的来源为* /&gt;在你的config.xml中(确保它在app目录的根目录中,位于www文件夹上方。 即:

    <access origin="*" />
    
  3. 将以下代码添加到MainViewController.m

    - (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 ];
        }
    } 
    
  4. 我制作了一个快速视频,解释了如何解决此问题:

    http://www.youtube.com/watch?v=zqbjXSnAR-Q&feature=c4-overview&list=UUefS6KLvFQVjhmL6hiBq4Sg

    希望它有所帮助!

答案 2 :(得分:1)

我最近一直在努力解决这个问题,并提出了一个至少对我有用的答案。 Cordova 2.6和JQuery Mobile。

<a href="http://yoursite.something.com" target="_system"> the external link </a>

你使用target =“_ blank”有相当多的答案。但这只是在他们的WebView中打开链接。希望这对你有用,就像它对我一样!

答案 3 :(得分:1)

你必须使用它:window.open('http://google.com','_ system');

来源在这里:http://wiki.apache.org/cordova/InAppBrowser