2012-05-01 68 views
1

我有一個window.onload函數,它加載了一個AJAX內容。當訪問者正在查看另一個頁面並嘗試重新載入頁面時(也通過AJAX調用AJAX),它也會觸發。 window.onload函數再次執行。有沒有辦法讓window.onload函數只執行一次?

是否有任何方法使window.onload函數只執行一次(通過存儲在緩存或其他東西)?

+0

使用cookie或會話? – j08691

回答

3

您可以在AJAX完成後設置cookie,然後在加載頁面時檢查此cookie。一些僞代碼:

$(function() { 
    if (!$.cookie("page-viewed")) { 
     // call ajax & display 

     $.cookie("page-viewed", true); 
    } 
}); 

這裏給jQuery cookie plugin


更新

基於對您的評論的代碼的鏈接,你會使用cookie插件這樣的:

$(window).load(function() { 
    if (!$.cookie("page-viewed")) { 
     $('#pages_holder').hide(0).delay(2500).fadeIn(1200, 'swing', {queue:false}); 
     $('#za').rotate3Di('+=360', 1000, {queue:false}, 'easeInOutCubic'); 
     $('.za').show().switchClass("za", "nas",500, 'easeOutQuad').switchClass("nas", "zavur6en", 1250, 'easeInOutCubic').delay(2000).hide(0) 
     $.ajax({ 
      url : 'pages/zanas.php', 
      success : function(response) { 
       $("#pages").html(response); 
      } 
     }); 
     $.cookie("page-viewed", true); 
    } 
}); 
+0

我從來沒有使用餅乾人。如果這是我的代碼,我需要做什麼: ' $(window).load(function(){ $('#pages_holder')。hide(0).delay(2500).fadeIn(1200, '擺動',{隊列:假}); \t $( '#ZA')rotate3Di( '+ = 360',1000,{隊列:假}, 'easeInOutCubic'); \t \t $(」。 za')。show()。switchClass(「za」,「nas」,500,'easeOutQuad')。switchClass(「nas」,「zavur6en」,1250,'easeInOutCubic')。delay(2000).hide(0 ) \t $阿賈克斯({ 網址: '頁/ zanas.php', 成功:函數(響應){ $( 「#頁」)HTML(響應);} 。}); \t }); ' –

+0

我很抱歉這個爛攤子! –

+0

我已經爲你更新了我的答案。 –

0
<script type="text/javascript"> 
    $(function() { 
     // Have your onload ajax here 
    }); 
</script> 

我從來沒有見過這種運行超過每頁加載一次。

+0

但是這仍然會在每個頁面加載時執行? –

+0

定義頁面加載? –

+0

每次頁面加載....? –

相關問題