我正在使用 Phonegap for Windows Phone 8 开发应用程序。
我使用 jQuery Mobile 进行界面设计。
不$.mobile.changePage()
工作。页面没有被改变。
有没有其他方法可以改变页面?是否有任何其他框架来设计移动界面?
$("#btnSearch").bind('click', function() {
showSpinner();
$.mobile.changePage("#pageSearch");
});
我正在使用 Phonegap for Windows Phone 8 开发应用程序。
我使用 jQuery Mobile 进行界面设计。
不$.mobile.changePage()
工作。页面没有被改变。
有没有其他方法可以改变页面?是否有任何其他框架来设计移动界面?
$("#btnSearch").bind('click', function() {
showSpinner();
$.mobile.changePage("#pageSearch");
});
我认为这个问题与此处描述的 WP7 中的问题相同。
检查路径问题:
if($.mobile.path.getLocation("x-wmapp1:/app/www/index.html") != "x-wmapp1:/app/www/index.html")
{
console.log('there is path problem');
}
else
{
console.log('everything is OK with paths');
}
解决方案:
如 github 所述,问题是 WP7 上的路径与其他平台不同。基本上在 WP7 getLocation 打印带有双斜杠的相对路径,这首先导致了这个问题。要修复,请打开jquery.mobile-1.3.1.js并重构以下内容:
- var uri = url ? this.parseUrl( url ) : location,
- hash = this.parseUrl( url || location.href ).hash;
+ var uri = this.parseUrl( url || location.href ),
+ hash = uri.hash;
和:
- return uri.protocol + "//" + uri.host + uri.pathname + uri.search + hash;
+ return uri.protocol + uri.doubleSlash + uri.host + uri.pathname + uri.search + hash;
进行此更改后,检查应显示“一切正常”。
PS 这是在 WP7 上测试的,并且完全解决了我的 $.mobile.changePage() 问题。
PS2 这个问题在 jQuery 的 github 版本中得到了修复,虽然我刚刚检查了最新的稳定版本(1.3.2),不幸的是它没有在那里修复。
问候,
赫里斯托·托多罗夫
我确实遇到了上面答案中提到的路径问题,但这并没有解决我的问题。经过大量试验和错误后,我发现是导致问题的 URL 开头的协议。
“mypage.html”的更改页面将发送一个 Ajax 请求
x-wmapp0://www/mypage.html
它需要只是
www/mypage.html
我对 jQuery Mobile 源代码进行了修改,以操纵字符串以切断协议,现在它可以完美运行。
要应用修复,在未缩小的jQuery Mobile js 文件中,搜索“$.ajax”并在其前面添加以下内容:
var parts = fileUrl.split("www/");
fileUrl = "www/" + parts[parts.length-1];
这实际上删除了“x-wmapp0://www/”并将“www/”重新打开。由于 jQuery Mobile 处理 url 的方式,仅删除“x-wmapp0://”并不总是有效,在某些情况下会导致“www/www/...”。
这已确认可与 Cordova 3.1 和 3.3 以及 jQuery Mobile 1.3.2 一起使用
我认为该方法已重命名为“pagechange”
http://jquerymobile.com/blog/2011/09/08/jquery-mobile-beta-3-released/#upgrade