2013-09-25 20 views
2

кодовая 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> 

и My 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 и запускаются на устройстве.

В основном я пытаюсь загрузить second.html в страницу index.html с помощью $ .mobile.changePage ("second.html") в событии tap, привязывая к ID #changePage в моем JS-файле.

Это отлично работает нормально в

  • Android телефонов

  • Internet Explorer 9 и 10

  • Webkit Браузеры

Но проблема выше код не работает на Windows Phone 8

Устройство я тестирование на это Nokia Lumia 920 рамки Jquery используется

  • jquery.mobile-1.3.2.js

  • JQuery-2.0.3.js

Я также пробовал с $ .ajax как dataType: "html" и $ .load функции, все это отлично работало в другой среде, упомянутой ab Ове за исключением окна Phone 8 (устройство упоминалось выше)

Я также следовал этой

StackOverflow solution for Window phones

ничего работал !!!!!

+1

использование jquery 1.9.1 не 2.0.3. Кроме того, используйте 'vclick' вместо' tap', это быстрее, чем крана. – Omar

+0

no use ... Omar все еще не работает !!! – Nirus

+0

https://github.com/jquery/jquery-mobile/pull/5235 – Omar

ответ

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

Я использовал JQuery, предложенный OMAR jquery 1.9.1. и все же необходимо проанализировать URL-адрес, прежде чем передавать его на страницу мобильных изменений. Приведенный выше код работал отлично.

Этот код по-прежнему не работает для JQuery 2.0+, вместо этого используйте версию 1.9.x !! -

Мое предложение не использовать jquery 2.0+ для Windows Phones

Это не будет работать для Window Phone, включая Ajax вызова как $ .ajax, $ .load, $ .get

0

У меня была такая же проблема только на днях. changeHash должно быть установлено на false в $.mobile.changePage('second.html', { reloadPage : false, changeHash : true });

Аналогичная проблема наблюдается и на старых устройствах для Android.

+0

попробовал это тоже ... без изменений !! – Nirus

0

То, что я просто должен работать немного похож на @conor ответ , Возможно, попробуйте использовать страницы css id в качестве селектора.

с помощью JQuery мобильного 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> 
0

@ решение Nirus работало как шарм на следующие е nvironment:

  • JQuery 1.9.1
  • jQM 1.3.2
  • PhoneGap 3.5.0-0.21.14
  • Windows Phone 8,1

Я надеюсь, что проблема может быть исправлена ​​в в ближайшем будущем командой Phonegap или jQM.

+0

Мое решение работает до 1.10.x, когда-либо использующего JQuery 2.0 – Nirus

Смежные вопросы