jQuery Mobile changePage()无法在Windows Phone中运行

时间:2013-03-06 13:40:54

标签: windows-phone-7 cordova jquery-mobile

我正在使用Phonegap for Windows Phone 8开发一个应用程序。

我使用jQuery Mobile进行界面设计。

$.mobile.changePage()无效。页面未被更改。

有没有其他方法可以更改页面?是否还有其他框架来设计移动界面?

$("#btnSearch").bind('click', function() {
    showSpinner();
    $.mobile.changePage("#pageSearch");
});

3 个答案:

答案 0 :(得分:2)

我认为这个问题与WP7中描述的here相同。

检查路径问题:

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');
}

<强> SOLUTION:

如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这个问题在github版本的jQuery上得到修复,虽然我刚刚检查了最新的稳定版本(1.3.2),但不幸的是它没有修复。

此致

Hristo Todorov

答案 1 :(得分:1)

我确实遇到了上面答案中提到的路径问题,但这并没有解决我的问题。我经过大量的试验和错误后发现,这是导致问题的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 /”。仅删除“x-wmapp0://”并不总是有效,因为jQuery Mobile使用url的方式,在某些情况下导致“www / www / ...”。

这证实与Cordova 3.1和3.3一起使用jQuery Mobile 1.3.2

答案 2 :(得分:-1)

我认为该方法已重命名为“pagechange”

http://jquerymobile.com/blog/2011/09/08/jquery-mobile-beta-3-released/#upgrade