如何强制网页突破原生移动应用?

时间:2014-04-02 23:30:24

标签: javascript android iphone html5 mobile-application

我有一个正在从原生应用中的网页浏览中查看的网页,此网页有一个元素。文件输入在Web浏览器中正常工作,但在应用程序中不起作用(iPhone和Android上的问题都不同)。

该应用已经发布,我真的不想更新该应用的原生部分。

理想的解决方案是将java脚本添加到网页中,该脚本可以检测到它在应用程序内运行,然后使用URL启动浏览器(在应用程序之外)。

这有可能吗?

3 个答案:

答案 0 :(得分:0)

如果您的应用覆盖了webview使用的默认用户代理,则可以。默认情况下,webview的用户代理与默认浏览器的用户代理相同。所以你没有办法区分那些。如果你的应用程序覆盖了useragent,那么你可以使用javascript&基于此采取行动。理想的解决方案是尽力解决你的html问题。

答案 1 :(得分:-1)

我的理解是,如果不更改应用程序,就无法启动应用程序之外的浏览器。

您可以在iOS中添加如下代码。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *address = request.URL.absoluteString;
    if( address is needed to be launched on the webbrowser ) {
        [[UIApplication sharedApplication] openURL:request.URL];
        return NO;
    }  
    return YES;
}

建议在网页和应用之间定义协议。欢呼声。

答案 2 :(得分:-1)

启动浏览器应该没问题,如此处所示:

Can I launch an intent using only javascript in an Android browser?

然而,检测应用程序很难。如果您已经在应用程序中使用了javascript桥接器,那么您可以调用本机应用程序javascript桥接器,如果成功,那么您就知道自己正在使用#34;您的应用程序"并且可以通过上述意图回复。

如果不这样,用户代理检测(如其他地方所述)可能是您的最佳选择。

换句话说,您需要在Webview中进行可识别且独特的操作,以确信您实际上在其中。如果你做了一个简单的vanilla实现,那么你将被迫进行用户交互("如果你正在使用我们的应用程序,请点击这里" - 太糟糕!)或更新原生应用程序。