我用这个把头发拔了...
我的应用程序在jquery-mobile (1.1.1)
前端运行。在(ipad1 + 3,iOS3 + 5)上的Mobile Safari中运行应用程序工作正常,但如果我通过主屏幕图标打开应用程序使用jquery (1.7.2)
requireJS
<meta name="apple-mobile-web-app-capable" content="yes" />
我所有加载新页面或在页面之间来回切换的 Jquery Mobile AJAX 请求都失败了。相反,错误加载页面消息会在链接到页面刚刚重新加载之前短暂闪烁,重新启动我的应用程序。
我已经坐了两天了,并尝试了以下所有方法:
manifest
(我实际上并没有使用清单,只是想看看它是否有帮助)
- 添加网络资源> 没有帮助
requireJS
- 从我的应用程序中完全删除 requireJS > 仍然不起作用
- 缓存破坏>没有帮助
offline
但是我仍然遇到页面未加载和导航中断的问题。
对我来说有意义的一个原因是在这篇博文中,它认为 Safari 在全屏模式与移动 Safari 中使用不同的 HTTP 用户代理字符串。全屏传递的字符串似乎无法识别,导致只需要基本的浏览器设置(例如不支持 javascript)。
发布的解决方法 ( for ASP.net
) 像这样伪造用户代理:
protected void Page_PreInit(object sender, EventArgs e) {
if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit", StringComparison.CurrentCultureIgnoreCase) > -1) {
this.ClientTarget = "uplevel";
}
}
问题:
当 iOS 全屏模式处于活动状态时(这完全可以检测到),我如何在 Javascript/Jquery 中包含这样的修复(~ 伪造用户代理)?另外我很好奇这种方法是否有任何警告?好像错了……