如何检测网站是否在iPhone的嵌入式浏览器中运行?

时间:2012-02-22 03:56:51

标签: javascript iphone

我有一个使用自定义协议处理程序打开应用程序的网页。一个链接到iTunes商店应用程序供人们下载Picup应用程序,另一个链接到fileupload://打开Picup应用程序。

当页面加载到嵌入在另一个应用程序(例如1Step扫描仪条形码扫描仪)中的Safari时,导航到这些自定义协议时,我收到错误消息 - 错误,无法加载网页!请再试一次。

我打算使用JavaScript来检测网页是否在嵌入式浏览器中加载,并显示一条消息,要求用户使用Safari。

一种方法是检测用户代理字符串

嵌入式

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405

Safari浏览器

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3

但是,是否在适用于所有iPhone版本的用户代理字符串中检测到Safari的存在/不存在?有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

显然是的,这是最好的方式。

甚至Chrome for iOs在请求时都包含Safari这个词,所以假设来自没有单词“Safari”的iOs的请求来自嵌入式UiWebKit控件,你应该没问题。

答案 1 :(得分:0)

您可以为您的请求设置自定义用户代理...这是一个示例:

NSString *urlString= @"http://www.google.com";
NSURL *url = [NSURL urlString];
NSMutableURLRequest *requestObj = [NSMutableURLRequest requestWithURL:url];
[requestObj setValue:@"myCustomAgent_Mathboy:)/1.0" forHTTPHeaderField:@"User_Agent"];
[webView loadRequest:requestObj];