JQuery Mobile在Windows Phone 7上出错(使用Zend)

3
我正在使用jQuery Mobile构建一个Web应用程序,在IOS和Android上进行了测试,没有遇到任何问题。WebOS有一些渲染问题,但不是很严重。但是当我在Windows Phone 7上测试该应用时,一切都崩溃了。
jQuery Mobile kitchen sink演示程序运行良好 - 我想可能是我的JavaScript出了问题,因此我将其全部删除。然而,这并没有解决问题。由于WP7几乎没有错误控制台,很难诊断出发生了什么。
这是链接: http://abolition.me/wp7.php 在Chrome和WP7中点击相同的链接后,我将头信息转储到我的Zend日志文件中,以下是记录的内容:
wp7:
[REDIRECT_STATUS] => 200
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_ACCEPT_LANGUAGE] => en-us
[HTTP_REFERER] => http://mobile.kinitawp7.designitfor.us/mobile#/mobile/tasks?filter=Open
[HTTP_ACCEPT] => text/html, */*; q=0.01
[HTTP_UA_CPU] => x86
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Microsoft; XDeviceEmulator)
[HTTP_HOST] => mobile.kinitawp7.designitfor.us
[HTTP_COOKIE] => <censored>
[HTTP_VIA] => <censored>
[HTTP_X_FORWARDED_FOR] => <censored>
[HTTP_CACHE_CONTROL] => max-age=259200
[HTTP_CONNECTION] => keep-alive
[PATH] => /usr/local/bin:/usr/bin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.2.16 (Ubuntu) Server at mobile.kinitawp7.designitfor.us Port 80</address>

[SERVER_SOFTWARE] => Apache/2.2.16 (Ubuntu)
[SERVER_NAME] => mobile.kinitawp7.designitfor.us
[SERVER_ADDR] => 50.56.102.225
[SERVER_PORT] => 80
[REMOTE_ADDR] => 50.84.91.226
[DOCUMENT_ROOT] => /var/www/kinita_branch/mobile.uwn.me/Website
[SERVER_ADMIN] => [no address given]
[SCRIPT_FILENAME] => /var/www/kinita_branch/mobile.uwn.me/Website/index.php
[REMOTE_PORT] => 46576
[REDIRECT_URL] => /viewtask/84
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => 
[REQUEST_URI] => /viewtask/84
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME] => 1307642025

这是来自Chrome的内容:

[REDIRECT_STATUS] => 200
[HTTP_HOST] => mobile.kinitawp7.designitfor.us
[HTTP_REFERER] => http://mobile.kinitawp7.designitfor.us/mobile
[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30
[HTTP_ACCEPT] => text/html, */*; q=0.01
[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
[HTTP_COOKIE] => <censored>
[HTTP_VIA] => <censored>
[HTTP_X_FORWARDED_FOR] => <censored>
[HTTP_CACHE_CONTROL] => max-age=259200
[HTTP_CONNECTION] => keep-alive
[PATH] => /usr/local/bin:/usr/bin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.2.16 (Ubuntu) Server at mobile.kinitawp7.designitfor.us Port 80</address>

[SERVER_SOFTWARE] => Apache/2.2.16 (Ubuntu)
[SERVER_NAME] => mobile.kinitawp7.designitfor.us
[SERVER_ADDR] => 50.56.102.225
[SERVER_PORT] => 80
[REMOTE_ADDR] => 50.84.91.226
[DOCUMENT_ROOT] => /var/www/kinita_branch/mobile.uwn.me/Website
[SERVER_ADMIN] => [no address given]
[SCRIPT_FILENAME] => /var/www/kinita_branch/mobile.uwn.me/Website/index.php
[REMOTE_PORT] => 47085
[REDIRECT_URL] => /mobile/viewtask/84
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => 
[REQUEST_URI] => /mobile/viewtask/84
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME] => 1307642163

问题在于WP7省略了其请求中的/mobile。
有什么想法吗?你以前见过这样的情况吗?
需要注意的是,如果我直接访问URL(即/mobile/viewtask/90),它可以正常工作。 问题似乎涉及jQM导航方式。
谢谢!
JQM问题报告链接: https://github.com/jquery/jquery-mobile/issues/1796 编辑: 需要说明的是,我正在使用Zend框架。

问题在于,我正在使用Zend框架,该框架使用mod_rewrite来规避Apache的自然目录结构。我正在对现有的Zend应用程序进行修改,以使其适用于移动环境,并且我需要处理根相对URL,以使新接口与现有后端兼容。 - mikermcneil
1
如果您打开 /#/mobile/tasks?filter=Open 会发生什么?另外,安装IE的DebugBar并查看JQM使用AJAX加载的地址以及响应内容。 - naugtur
其他有用的阅读 - 此页面底部:http://jquerymobile.com/demos/1.0a4.1/#docs/pages/docs-navmodel.html。就我所记得的,使用相对链接对于mod_rewrite并不是问题,因此如果您没有这样做,尝试使用相对路径以确保它能够正常工作。 - naugtur
我尝试添加一个斜杠,但它并没有解决问题。你说的相对URL在Zend中可以工作--不幸的是,这也没有解决问题。你可以在我编辑的链接上看到这个有问题的应用程序。 - mikermcneil
1
只是一个猜测:你是否尝试过 GitHub 上的 jQuery Mobile 当前版本?导航组件已经有很多变化,也许你的问题已经得到解决了。 - Christoph Baudson
显示剩余3条评论
1个回答

1

针对未来读者的更新:该问题已在最新版本中得到修复。在alpha4.1之后的发布版本中不应再出现此问题。

我认为你的URL应该是

http://mobile.kinitawp7.designitfor.us/mobile/#viewtask/93

替代

http://mobile.kinitawp7.designitfor.us/mobile#/mobile/viewtask/93

你不需要更改任何与mod_rewrite相关的内容,只需更改链接。

因此

<a href="/mobile/tasks?filter=Open">

将被替换为

<a href="tasks?filter=Open">

等等。


URL地址是由jQuery Mobile动态生成的。例如,如果我指定http://mobile.kinitawp7.designitfor.us/mobile/viewtask/93,jQuery Mobile会将其转换为http://mobile.kinitawp7.designitfor.us/mobile#/mobile/viewtask/93。我尝试使用相对URL viewtask/93,但仍然不起作用--jQuery Mobile仍然截断URL的第一个子目录(请求/viewtask/93而不是/mobile/viewtask/93)。 - mikermcneil
1
有进展吗?我认为这可能可以报告为Github上的错误,但至少一段时间内无法解决问题。我建议阅读关于wp7支持的相关内容,这对JQM来说仍然是一个新事物。 - naugtur
他们在上周的某个时候修复了它!我已经提交了一个错误报告,但有人将其关闭为无效。幸运的是,看起来已经有人在处理了。谢谢! - mikermcneil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接