2012-01-11 39 views
2

我遇到一个奇怪的问题,只有Chrome + Firefox。它不会在IOS或IE9上重现。使用JQuery Mobile(和ASP.NET MVC3)的空白重定向页面

这里的摄制:

  1. 加载主页http://example.com
  2. 登录(通过一个相对= “外部” 的超链接)。在我的情况下,我使用Facebook的Oauth服务器端流 - 所以这个URL是一个facebook.com。
  3. Facebook接受用户的凭据,然后重定向到http://example.com/user/callback。这里处理各种facebook数据(它在查询字符串中提供)。
  4. 服务器端代码http://example.com/user/callback然后将用户重定向到http://example.com。用于重定向的机制是来自ASP.NET MVC3的RedirectToAction。这将返回一个302

预期结果: 用户将看到均能显示在他们的浏览器= http://example.com和内容的URL。这适用于IE和Safari。

操作结果(在Chrome只) 用户得到一个网址在浏览器= http://example.com/#base_domain=example.com 实际的页面是空白的(不可见的内容) 但是一个查看源代码表明的内容存在。

操作结果(上仅Firefox) 用户得到一个网址在浏览器= http://example.com/#_=_ 实际的页面是空白的(不可见的内容) 但是一个查看源代码表明的内容存在。

附加信息 如果我在IE中输入网址http://example.com/#base_domain=example.com,我会得到相同的“隐藏”内容(即HTML源代码仍然存在的空白页面)。

我也应该注意我在应用程序的其他部分使用RedirectToAction/302重定向技术,没有任何问题。

这个问题也关闭了AJAX导航的repros。

编辑:这也适用于Safari(OSX + Windows)没有问题。它只在Windows和PC上的Chrome + Firefox上显然崩溃。

IOS/Safari浏览器:OK 赢/ Safari浏览器:OK 赢/ IE:OK 的Windows Phone模拟器:OK

赢/火狐:borked 赢/铬:borked

OSX/Safari浏览器: OK OSX/Firefox:borked OSX/Chrome:borked

不确定关于Android。

+0

通过IOS你是指移动Safari吗? – 2012-01-11 01:20:59

+0

是的 - 没错 - Mobile Safari。不过,我只是在Safari上做了一个repro,并且工作正常(与IE和IOS相同)。 – 2012-01-11 04:09:10

回答

1

最好的解决方案似乎是将Push State和Hash Listening设置为false - 所以chrome/ff完全忽略它们。我已经禁用AJAX导航(有一些有趣的行为,我还没有完全说明我的服务器端代码)。

$.mobile.pushStateEnabled = false; 
    $.mobile.hashListeningEnabled = false; 

我可能会等待1.1和稳定我的代码的其余部分,然后才试图让AJAX导航工作。