2013-03-06 42 views
6

Tôi đang phát triển một ứng dụng bằng Phonegap cho Windows Phone 8.jQuery Mobile changePage() không hoạt động trong Windows Phone

Tôi đã sử dụng jQuery Mobile để thiết kế giao diện.

$.mobile.changePage() không hoạt động. Trang không bị thay đổi.

Có cách nào khác để thay đổi trang không? Có khung nào khác để thiết kế giao diện cho thiết bị di động không?

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

Ca bạn đăng mã gọi '$ .mobile.changePage()'? –

+0

mã hoạt động hoàn hảo trên Android. –

+1

Phiên bản Windows 8 dành cho thiết bị di động không được jQuery Mobile hỗ trợ sion, http://jquerymobile.com/gbs/. Nhưng mã của bạn là chính xác. Vấn đề chính là hệ điều hành không được hỗ trợ. – Gajotres

Trả lời

2

Tôi nghĩ rằng vấn đề này là tương tự như trong WP7 mô tả here.

KIỂM TRA ĐỐI VỚI VẤN ĐỀ PATH:

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:

Như đã trình bày trong github, vấn đề là con đường trên WP7 khác với các nền tảng khác. Về cơ bản trên WP7 getLocation in đường dẫn tương đối với dấu gạch chéo kép, gây ra vấn đề này ở vị trí đầu tiên. Để khắc phục, mở jquery.mobile-1.3.1.js và refactor sau:

-  var uri = url ? this.parseUrl(url) : location, 
-   hash = this.parseUrl(url || location.href).hash; 
+  var uri = this.parseUrl(url || location.href), 
+   hash = uri.hash; 

và:

-  return uri.protocol + "//" + uri.host + uri.pathname + uri.search + hash; 
+  return uri.protocol + uri.doubleSlash + uri.host + uri.pathname + uri.search + hash; 

Sau khi thực hiện điều này thay đổi, kiểm tra sẽ hiển thị "tất cả mọi thứ là OK".

PS Điều này được kiểm tra trên WP7 và hoàn toàn khắc phục sự cố của tôi với $ .mobile.changePage().

PS2 Vấn đề này được khắc phục ở phiên bản github của jQuery, mặc dù tôi vừa kiểm tra phiên bản ổn định mới nhất (1.3.2) và tiếc là nó KHÔNG được sửa ở đó.

Kính trọng,

Hristo Todorov

+0

Wowza, thisPagePage cố định cho tôi trong Windows Phone 8. Bất kỳ cơ hội này sẽ được trong 1.3.3 hoặc os? –

1

tôi đã có vấn đề đường dẫn được đề cập trong câu trả lời ở trên, nhưng điều này đã không giải quyết vấn đề của tôi. Tôi phát hiện ra sau rất nhiều thử nghiệm và lỗi rằng đó là giao thức vào đầu URL đã gây ra sự cố.

Một trang thay đổi cho "mypage.html" sẽ gửi một yêu cầu Ajax cho

x-wmapp0://www/mypage.html 

Nó cần phải được chỉ

www/mypage.html 

tôi đã thực hiện một modifcation đến nguồn jQuery Mobile để thao tác chuỗi để cắt bỏ giao thức và bây giờ nó hoạt động hoàn hảo.

Để áp dụng sửa chữa, trong chưa được khai thác tối thiểu tệp js trên thiết bị di động jQuery, hãy tìm kiếm "$.ajax "và thêm ngay trước khi nó như sau:

var parts = fileUrl.split("www/"); 
fileUrl = "www/" + parts[parts.length-1]; 

Điều này thực sự loại bỏ "x-wmapp0: // www /" và đặt "www /" trở lại trên một lần nữa loại bỏ chỉ." x-wmapp0: // "không phải lúc nào cũng hoạt động vì cách jQuery Mobile hoạt động với các url, dẫn đến" www/www/... "trong một số trường hợp.

Điều này được xác nhận để làm việc với Cordova 3.1 và 3.3 với jQuery Mobile 1.3.2

+0

Cảm ơn bạn rất nhiều điều này đã là một nỗi đau lớn đối với tôi! Tôi có cần phải giữ các phiên bản di động jQuery riêng biệt cho Windows Phone và iOs/Android (vì tôi không có vấn đề ở đó) –

+0

Tôi đã giữ một bản sao riêng cho tôi. –

Các vấn đề liên quan