我目前有一個移動網站,我正在建設和我在整合自定義JQuery小部件的麻煩。由於某種原因,頁面展示事件會先發生兩次,無論哪一頁首先被加載。jquery移動pageshow事件發射兩次
爲了便於理解,我已經創建了兩個HTML頁面
<!doctype html>
<head>
<meta charset="utf-8">
<title>One</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).on("mobileinit", function() {
$.mobile.changePage.defaults.reloadPage = true;
});
</script>
<script type="text/javascript" src="https://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.js"></script>
</head>
<body id="default">
<div data-role="page" id="content-one">
<div role="main" class="ui-content" id="one-content">
One<br/>
<a href="two.html">back to two</a>
</div>
<script type="text/javascript">
(function($, undefined) {
$.widget("test.stuff", {
_create : function() {
console.log("create");
},
_init : function() {
console.log("_init");
},
destroy: function() {
this.element.empty();
$.Widget.prototype.destroy.call(this);
}
});
})(jQuery);
</script>
<script type="text/javascript">
$(document).on("pageshow", "#content-one", function() {
console.log("pageshow1");
$("#content-one").stuff({});
});
$(document).on("pagebeforeshow", "#content-one", function() {
console.log("pagebeforeshow1");
});
</script>
</div>
</body>
</html>
第2頁
<!doctype html>
<head>
<meta charset="utf-8">
<title>Two</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"> </script>
<script type="text/javascript">
$(document).on("mobileinit", function() {
$.mobile.changePage.defaults.reloadPage = true;
});
</script>
<script type="text/javascript" src="https://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.js"></script>
</head>
<body id="default">
<div data-role="page" id="content-two">
<div role="main" class="ui-content">
Two<br/>
<a href="one.html">back to one</a>
</div>
<script type="text/javascript">
$(document).on("pageshow", "#content-two", function() {
console.log("pageshow2");
});
$(document).on("pagebeforeshow", "#content-two", function() {
console.log("pagebeforeshow2");
});
</script>
</div>
</body>
</html>
要重新加載頁面一個第一,轉到頁兩個使用鏈接,然後使用鏈接導航到第一頁。
當頁面1再次被加載時,頁面顯示事件被觸發兩次。我將reloadPage設置爲true,因爲我的頁面具有動態內容,並且無法提供緩存頁面。
我很可能會錯誤地使用這些事件。
'reloadPage'已被棄用,不再可以被設置爲_option_。而是使用'$ .mobile.pageContainer.pagecontainer(「change」,「page.html」,{reload:true});'以加載頁面並以編程方式重新加載。另外,'pageshow'已被棄用,但仍在運行,使用'$(document).on(「pagecontainershow」,function(){code});'。 – Omar
如果我不應該使用reloadPage我應該使用什麼機制來確保每次加載每個頁面並且不從緩存中取出?我希望這是所有導航的默認功能。 – mfleshman
'reload'而不是'reloadPage'。 – Omar