Javascript 如何强制网页脱离本机移动应用程序?

Javascript 如何强制网页脱离本机移动应用程序?,javascript,android,iphone,html,mobile-application,Javascript,Android,Iphone,Html,Mobile Application,我有一个在本机应用程序中从webview查看的网页,该网页有一个元素。文件输入在web浏览器中运行良好,但在应用程序中不起作用。iPhone和Android上都存在不同的问题 应用程序已经发布,我真的不想更新应用程序的本机部分 理想的解决方案是将java脚本添加到网页中,该网页可以检测到它正在应用程序内部运行,然后在应用程序外部启动一个带有URL的浏览器 这有可能吗 如果您的应用程序覆盖webview使用的默认用户代理,这是可能的。默认情况下,webview的用户代理与默认浏览器的用户代理相同。

我有一个在本机应用程序中从webview查看的网页,该网页有一个元素。文件输入在web浏览器中运行良好,但在应用程序中不起作用。iPhone和Android上都存在不同的问题

应用程序已经发布,我真的不想更新应用程序的本机部分

理想的解决方案是将java脚本添加到网页中,该网页可以检测到它正在应用程序内部运行,然后在应用程序外部启动一个带有URL的浏览器


这有可能吗

如果您的应用程序覆盖webview使用的默认用户代理,这是可能的。默认情况下,webview的用户代理与默认浏览器的用户代理相同。所以你没有办法区分这些。如果你的应用覆盖了useragent,那么你可以使用javascript嗅探useragent,并据此采取行动。理想的解决方案是尝试用html解决这个问题

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

您可以在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;
}

建议在网页和应用程序之间定义协议。干杯。

启动浏览器应该没有问题,如下所示:

然而,检测应用程序是困难的。如果你已经在应用程序中使用javascript桥,那么你可以调用本机应用程序javascript桥,如果成功,那么你知道你在应用程序中,并且可以响应上面的意图调用

如果做不到这一点,用户代理检测,正如其他地方提到的,可能是您的最佳选择


换言之,您需要在webview中有一个可识别且独特的操作,以便确信您确实在其中。如果你做了一个普通的实现,那么你将被迫进行用户交互,如果你正在使用我们的应用程序,请单击此处-太可怕了!或者更新本机应用程序。

该链接讨论了启动特定目的,未打开默认浏览器。我的回答不需要默认浏览器-该链接说明设备上有多个目标的意图可能已设置为默认值,该默认值不在应用程序的控制范围内-或在问题的范围内。抱歉,打开默认浏览器,这正是我的意思——例如,在我的手机上,Android会提示我是否要在Chrome或Orfox中打开URL。网页可以指定URI——浏览器或其他能够处理该意图的资源。应用程序无法用选定的默认值覆盖通用意图,因此OP需要确定响应。关键的部分实际上是从一个网页确定用户是在他们的应用程序中查看内容,而不是在另一个应用程序或浏览器中。一旦确定应用程序中正在查看网页,OP应该对URI有独特的了解,以提供所需的结果。。或者知道在不更新应用程序的情况下无法实现期望的结果——这就是问题所在——这个问题被标记为Android;Android代码示例比iOS代码示例更有用: