2012-05-01 69 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

每次页面加载....? –

相关问题