主要問題JavaScript的HTML5歷史,變量初始化和popState
有鑑別,如果我們要訪問一個頁面的第一次或者是背面的原因的JavaScript的方式?
我的問題
我實現HTML5導航在我的AJAX驅動的網頁。
在主腳本上,我用一些值初始化一個變量。
<script>
var awnsers=[];
process(awnsers);
<script>
進程(awnsers)將根據給定的awnsers使用ajax更新視圖。
在調用Ajax和替代視圖的功能可按,我存儲歷史
history.pushState(state, "", "");
我定義的popstate也,在這裏我根據回恢復視圖。而且,我修改了舊值的全局變量awnsers。
function popState(event) {
if (event.state) {
state = event.state;
awnsers=state.awnsers;
updateView(state.view);
}
}
導航(來回)那張corectly除了當我去到一個外部頁面,然後按返回(arrving到我的網頁再次)。 當我們訪問頁面時,首先調用主腳本,更新可調整的awnsers,並開始ajax。同樣,彈出狀態事件被調用,並更新視圖。之後,主Ajax結束,並根據空值更新視圖。
所以我需要的代碼:
<script>
var awnsers=[];
process(awnsers);
<script>
當用戶進入頁面只能叫而不是在它是一回。任何方式來做到這一點?
謝謝!
可能的解決方案 在第一臺awnser之後,我想到了一種可能的解決方案。經過測試和工作,不管誰,我不知道是否有更清潔的解決方案。我添加了我所做的更改。
首先,我補充一下:
$(function() {
justLoaded=true;
});
然後我修改popState功能,讓負責初始化變量
function popState(event) {
if (event.state) {
state = event.state;
awnsers=state.awnsers;
updateView(state.view);
} else if(justLoaded){
awnsers=[];
process(awnsers);
}
justLoaded=false;
}
這就是所有。
這是行不通的。從外部頁面返回將首先調用onPageLoad,所以我將失去歷史,並有價值awnsers = [];然而,你給了我一個主意。我會用它改變我的帖子。 – Mateu 2012-01-18 12:39:39