在Chrome中Jquery函数加载/触发两次

时间:2012-03-29 21:26:33

标签: jquery ajax

我有一个对我的网站至关重要的代码,它适用于所有浏览器,但似乎在Chrome中引发了两次。当我刷新页面时它会触发两次,但是当我使用ajax / jquery将内容加载到我页面上的主div中时则不会。但是,它可以在其他所有浏览器中完美运行,并且不会触发两次。这是我的代码:

<script type='text/javascript'>
$("a").live('click', function(){
history.pushState({}, '', this.href);
popstate(this.href);
return false;
});
$(window).load(function(){
window.onpopstate = function(event){
popstate(window.location.href);
event.preventDefault();
}
popstate = function(url){
url = '/ajaxlinks/ajaxlink'+window.location.pathname.substr(1);
if (url == '/ajaxlinks/ajaxlink'){url = '/ajaxlinks/ajaxlinkindex.php'}
if (url.indexOf(".php") == -1){url = '/ajaxlinks/ajaxlinkprofile.php'}
if (url == '/ajaxlinks/ajaxlinkaccountrecovery.php'){window.location =   'http://www.pearlsquirrel.com/accountrecovery.php';}
if (url == '/ajaxlinks/ajaxlinklogin.php'){window.location =   'http://www.pearlsquirrel.com/login.php';}
if (url == '/ajaxlinks/ajaxlinklogout.php'){window.location =    'http://www.pearlsquirrel.com/logout.php';}
$('#ajaxloadcontent').load(url);
$('html, body').animate({scrollTop:0}, 'fast');
}
});
</script>

如果有人知道如何解决这个问题,我将非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

你应该总是将jQuery代码包含在jQuery的内置“ready”块中。

$(function(){
    //all code here
});

自动处理相关的“就绪”事件。