Tôi có một ứng dụng Mobile Phone Phonegap & hoạt động độc đáo trên Android và web. Trên iOS, tôi nhận được kết quả không mong muốn, điều này dường như là do sự kiện document.pageinit mà tôi ràng buộc trình xử lý cho hầu hết các quy trình của ứng dụng được kích hoạt hai lần.Tài liệu pageinit kích hoạt nhiều lần trên iOS (jQueryMobile)
Không, tôi không liên kết hai lần. Không, tôi không sử dụng document.ready. Có, tôi đã liên kết nó với tài liệu, sớm trong kịch bản và không phải bên trong bất kỳ chức năng nào khác.
$(document).on('pageinit',function(event){
alert(' Pageinit on document');
//Some more code
})
Lần đầu tiên kích hoạt, màn hình khởi động vẫn hiển thị. Tại thời điểm này, trong khi thử nghiệm trên một MacBook Pro với XCode, giao diện điều khiển thậm chí không avaiable: thông báo trên đã không hiển thị trong giao diện điều khiển khi tôi sử dụng console.log.
Lần thứ hai xung quanh, đám cháy ngay sau khi jQueryMobile tạo trang đầu tiên.
Điều gì gây ra sự kích hoạt kép này và tôi có thể làm gì với điều này?
EDIT: Tôi nhận thấy sau đó tranginit không chỉ kích hoạt lần thứ hai, nhưng mỗi khi tôi mở một div data-role = 'page' mới. Xem câu trả lời của tôi dưới đây.
Thaaaaank bạn! Tôi đã tìm kiếm giải pháp cho vài phút cuối cùng, Google không cung cấp gì cho "pageinit được gọi là hai lần" và '.one()' của bạn là giải pháp lý tưởng. Tôi sẽ upvote bởi mười nếu tôi có thể :) – PiotrK
Hơi ngạc nhiên, tôi đã nhìn thấy hành vi này khi sử dụng mã ứng dụng của tôi trong trình duyệt máy tính để bàn (IE10 và Chrome/Windows) chứ không phải trong iOS. Bản sửa lỗi được đề xuất này cũng đã giúp ích cho những trường hợp đó. Đề xuất tuyệt vời. Cảm ơn! –