[英]popstate HTML 5 event being fired multiple times
您好我正在使用以下代碼使用 jquery 動態加載頁面的一部分
loadNextBackInPage_URL = null;
function callBackFunctionLoadNextBackInPage(data)
{
//alert(data);
$("#left").fadeTo(100,1);
var data = $(data).find( '#left' );
$("#left").html(data);
if(supports_history_api())
{
history.pushState(null, null, loadNextBackInPage_URL);
window.addEventListener("popstate", function(e) {
alert('s');
loadNextBackInPage(location.pathname);
});
}
else
{
}
}
function loadNextBackInPage(url,parm)
{
//alert(url);
loadNextBackInPage_URL = url;
$("#left").fadeTo(100,.2);
$.post(url,parm,callBackFunctionLoadNextBackInPage,'html');
}
加載部分,甚至更改瀏覽器 URL 正在工作。 但為什么 PoP state function 會被多次觸發?
我最初通過 onclick function 調用 loadNextBackInPage()。
我在編碼論壇中從這里解決了
認為您一遍又一遍地添加“popstate”偵聽器...
程序邏輯:
因此,第 4 步將一遍又一遍地執行,這將注冊新的事件偵聽器。 每次“popstate”觸發時,所有的事件監聽器都會執行
嘗試將 addEventListener 方法調用移出此循環
所以從那些我得出一個解決方法,並將location.pathname
更正為location.href
更正后的代碼:
loadNextBackInPage_URL = null;
popEventListnerAdded = false;
function callBackFunctionLoadNextBackInPage(data)
{
//alert(data);
$("#left").fadeTo(100,1);
var data = $(data).find( '#left' );
$("#left").html(data);
if(supports_history_api())
{
history.pushState(null, null, loadNextBackInPage_URL);
if(!popEventListnerAdded) {
window.addEventListener("popstate", function(e) {
loadNextBackInPage(location.href);
});
popEventListnerAdded = true;
}
}
else
{
}
}
function loadNextBackInPage(url,parm)
{
//alert(url);
loadNextBackInPage_URL = url;
$("#left").fadeTo(100,.2);
$.post(url,parm,callBackFunctionLoadNextBackInPage,'html');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.