【问题标题】:jQuery Mobile changePage() not working in Windows PhonejQuery Mobile changePage() 在 Windows Phone 中不起作用
【发布时间】:2013-03-06 13:40:54
【问题描述】:

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

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

$.mobile.changePage() 不工作。页面没有被改变。

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

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

【问题讨论】:

  • 你贴出调用$.mobile.changePage()的代码吗?
  • 代码在 Android 上完美运行。
  • jQuery Mobile 不支持 Windows 8 Mobile 版本,直到当前版本 jquerymobile.com/gbs。但是你的代码是正确的。主要问题是不支持的操作系统。
  • 我认为有些东西可以帮助你。我记得 WP7 在 phonegap 应用程序中的 changepage 功能有问题。看看这个链接:github.com/jquery/jquery-mobile/pull/5235 和谷歌:jquery mobile changepage not working wp7
  • @Gajotres 如果支持 Windows Phone 7.5-7.8,那么 Windows Phone 8 肯定也支持(尤其是因为支持 Windows 8 RT,并且两者都使用“移动优化”IE10)。我确定它没有列出 b/c 他们不想自己进行质量检查

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


【解决方案1】:

我认为这个问题与 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');
}

解决方案:

如 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),但不幸的是它没有在那里修复。

问候,

赫里斯托·托多罗夫

【讨论】:

  • 哇,这个在 Windows Phone 8 中为我修复的 changePage。有没有可能在 1.3.3 或 os 中?
【解决方案2】:

我确实遇到了上面答案中提到的路径问题,但这并没有解决我的问题。经过大量试验和错误后,我发现是 URL 开头的协议导致了问题。

“mypage.html”的更改页面将发送一个 Ajax 请求

x-wmapp0://www/mypage.html

应该只是

www/mypage.html

我对 jQuery Mobile 源代码进行了修改,以操纵字符串以切断协议,现在它可以完美运行了。

要应用修复,在 un-minified 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 一起使用

【讨论】:

  • 非常感谢,这对我来说是一个巨大的痛苦!我是否需要为 Windows Phone 和 iOs/Android 保留单独的 jQuery 移动版本(因为我在那里没有问题)
  • 我一直为我保留一份单独的副本。
【解决方案3】:

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

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

【讨论】:

  • 否定。该事件已重命名 - OP 询问 changePage 方法,该方法肯定仍然存在于 JQM 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多