jquery mobile $ .mobile.changePage()Windows phone 8无法工作Cordova / PhoneGap

时间:2013-09-25 15:49:20

标签: javascript jquery jquery-mobile cordova windows-phone-8

代码Index.html

<div data-role="page" id="index">
    <div data-role="header">
        <h3>
            First Page
        </h3>
    </div>
    <div id="data">

    </div>
    <div data-role="content">
        <button data-role="button" id="changePage">Pass parameters with changePage function</button>
        <a href="second.html"  data-role="button">Or through a basic link</a>
    </div>
</div>

和我的js文件

 $(document).on('tap', "#changePage",function () {     
              $.mobile.changePage('second.html', { reloadPage : false, changeHash : true });
    }); 

和second.html

<div data-role="page" id="second">
    <div data-role="header">
        <h3>
            Second Page
        </h3>
    </div>
    <div data-role="content">
<div id="data"></div>
    <div data-role="button" id="clickBtn">click me</div>
    <div data-role="button" id="paqeBtn">change Page</div>
  </div>
 </div>

所有这些文件都使用PhoneGap / Cordova打包并在设备上运行。

基本上我试图通过绑定到我的JS文件中的ID #changePage,在tap事件上使用$ .mobile.changePage(“second.html”)将second.html加载到index.html页面。

这完全正常
  • Android手机

  • Internet Explorer 9和10

  • Webkit浏览器

但问题是以上代码无法在Windows Phone 8上运行

我正在测试的设备是诺基亚Lumia 920 使用的Jquery框架是

  • jquery.mobile-1.3.2.js

  • 的jquery-2.0.3.js

我还尝试使用$ .ajax作为dataType:“html”和$ .load函数所有这些在上面提到的其他环境中完全正常,除了Window Phone 8(上面提到的设备)

我也跟着这个

StackOverflow solution for Window phones

什么都没有用!!!!!

4 个答案:

答案 0 :(得分:2)

var url = window.location.href;
                            url = url.split('#').pop().split('?').pop();
                            url = url.replace(url.substring(url.lastIndexOf('/') + 1),"second.html");
                            $.mobile.changePage(url, { reloadPage : false, changeHash : false });

我使用了OMAR jquery 1.9.1建议的Jquery。并且在将URL传递给移动更改页面之前仍需要解析URL。上面的代码完全正常。

以上代码仍不适用于Jquery 2.0+,请使用1.9.x版本!   -

我的建议是不要在Windows Phone上使用jquery 2.0+

它不适用于Window Phone,包括$ .ajax,$。load,$ .get

之类的Ajax调用

答案 1 :(得分:0)

前几天我遇到了同样的问题。必须在$.mobile.changePage('second.html', { reloadPage : false, changeHash : true });

中将changeHash设置为false

旧的Android设备上存在类似的问题。

答案 2 :(得分:0)

我刚开始工作有点类似@conor的答案。也许尝试使用页面css id作为选择器。

使用jquery mobile 1.3

jQuery的:

$(document).ready(function () {

              $(".myinfo").on("tap", function(){
                                 $.mobile.changePage("#MyInfo", { transition: "none", reverse: false, changeHash: true});
                                   });

HTML:

 <div data-role="page" id="MyInfo">
        <div data-role="header" data-theme="e">

链接:

     <li><a href="#" data-icon="custom" class="myinfo">My Info</a></li>

答案 3 :(得分:0)

@ Nirus的解决方案就像下面环境中的魅力一样:

  • jQuery 1.9.1
  • jQM 1.3.2
  • Phonegap 3.5.0-0.21.14
  • Windows Phone 8.1

我希望Phonegap或jQM的团队能够在不久的将来解决这个问题。