确定用户是否从移动 Safari 导航

新手上路,请多包涵

我有一个应用程序,我想根据用户的导航位置将用户重定向到不同的页面。

如果从网络剪辑导航,请不要重定向。如果从移动版 Safari 导航,重定向到 safari.aspx。如果从其他任何地方导航,重定向到 unavailable.aspx

我能够使用 iPhone WebApps,有没有办法检测它是如何加载的?主屏幕 vs Safari? 确定用户是否从网络剪辑导航,但我无法确定用户是否从 iPhone 或 iPod 上的移动 Safari 导航。

这是我所拥有的:

 if (window.navigator.standalone) {
    // user navigated from web clip, don't redirect
}
else if (/*logic for mobile Safari*/) {
    //user navigated from mobile Safari, redirect to safari page
    window.location = "safari.aspx";
}
else {
    //user navigated from some other browser, redirect to unavailable page
    window.location = "unavailable.aspx";
}

原文由 Steven 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 285
2 个回答

更新:这是一个非常古老的答案,我无法删除它,因为答案已被接受。检查 下面不知情的答案 以获得更好的解决方案。


您应该能够检查 用户代理 字符串中的“iPad”或“iPhone”子字符串:

 var userAgent = window.navigator.userAgent;

if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) {
   // iPad or iPhone
}
else {
   // Anything else
}

原文由 Daniel Vassallo 发布,翻译遵循 CC BY-SA 3.0 许可协议

请参阅 https://developer.chrome.com/multidevice/user-agent#chrome_for_ios_user_agent - iOS 上的 Safari 和 iOS 上的 Chrome 的用户代理字符串非常相似:

铬合金

Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3

苹果浏览器

Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3

看起来这里最好的方法是首先按照其他答案的建议检查 iOS,然后过滤使 Safari UA 独一无二的东西,我建议最好用“是 AppleWebKit 而不是 CriOS”来完成:

 var ua = window.navigator.userAgent;
var iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);
var webkit = !!ua.match(/WebKit/i);
var iOSSafari = iOS && webkit && !ua.match(/CriOS/i);

原文由 unwitting 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题