我正在使用带有jQuery历史记录的jQuery 1.4并试图找出为什么Firebug / Web Inspector在每个页面加载时显示2个XHR GET请求(访问我的网站主页时加倍(/
或{{ 1}})。
e.g。访问启用了Firebug的this(或任何)页面。
以下是经过编辑/相关的代码(请参阅full source): -
/#
可能有用的一些注意事项: -
$(document).ready(function() {
$('body').delegate('a', 'click', function(e) {
var hash = this.href;
if (hash.indexOf(window.location.hostname) > 0) { /* Internal */
hash = hash.substr((window.location.protocol+'//'+window.location.host+'/').length);
$.historyLoad(hash); return false;
} else if (hash.indexOf(window.location.hostname) == -1) { /* External */
window.open(hash); return false;
} else { /* Nothing to do */ }
});
$.historyInit(function(hash) {
$('#loading').remove(); $('#container').append('<span id="loading">Loading...</span>');
$('#ajax').animate({height: 'hide'}, 'fast', 'swing', function() {
$('#page').empty(); $('#loading').fadeIn('fast');
if (hash == '') { /* Index */
$('#ajax').load('/ #ajax','', function() { ajaxLoad(); });
} else {
$('#ajax').load(hash + ' #ajax', '', function(responseText, textStatus, XMLHttpRequest) {
switch (XMLHttpRequest.status) {
case 200: ajaxLoad(); break;
case 404: $('#ajax').load('/404 #ajax','', ajaxLoad); break; // Default 404
default: alert('We\'re experiencing technical difficulties. Try refreshing.'); break;
}
});
}
}); // $('#ajax')
}); // historyInit()
function ajaxLoad() {
$('#loading').fadeOut('fast', function() {
$(this).remove(); $('#ajax').animate({height: 'show', opacity: '1'}, 'fast', 'swing');
});
}
});
重定向到/links-like/this
/#links-like/this
而不是window.location.replace(addr);
提前致谢。
答案 0 :(得分:2)
我认为你已经回答了自己的问题:
“我正在通过JavaScript(PE)将
/links-like/this
重定向到/#links-like/this
”
答案 1 :(得分:1)
我上面发布的代码示例可能有助于回答我自己的问题......
在我的实际网站上.load()嵌套在2个级别的回调中: -
$.historyInit(function(hash) {
$('html, body').animate({scrollTop: '0'}, 500, 'swing', function() { \\ level 1
$('#loading').remove(); $('#container').append('<span id="loading">Loading...</span>');
$('#ajax').animate({height: 'hide'}, 'fast', 'swing', function() { \\ level 2
$('#page').empty(); $('#loading').fadeIn('fast');
if (hash == '') { /* Index */
$('#ajax').load('/ #ajax','', function() { ajaxLoad(); });
} else {
$('#ajax').load(hash + ' #ajax', '', function(responseText, textStatus, XMLHttpRequest) {
switch (XMLHttpRequest.status) {
case 200: ajaxLoad(); break;
case 404: $('#ajax').load('/404 #ajax','', ajaxLoad); break; // Default 404
default: alert('We\'re experiencing technical difficulties. Try refreshing.'); break;
}
});
}
}); // $('#ajax')
}); // $('html, body')
}); // historyInit()
...在回调之外移动if (hash)
语句会让我回到所有页面的1 XHR GET(/
为唯一例外)。
再次感谢您帮助保罗。