我使用Firefox V26.0。 JavaScript將始終在所有鏈接上放置一個事件,以便在點擊時發出ajax調用並異步加載頁面。將被加載的內容將是一個JSON字符串。它會解析字符串以獲取所有信息(內容,page_title和uri)。 之後,我的腳本調用window.history.pushstate()來更改瀏覽器的歷史記錄。然後錯誤出現在源代碼中。加載的json字符串將在Firefox V26.0的源代碼中可見。 只有在我的AJAX成功函數中有window.history.pushstate()時纔會出現。 所以一定,因爲也發生錯誤,如果這條線將被註釋掉的問題不是AJAX with history.pushState
$('#ajax_load').html(obj.content);
。只有當我使用pushState()時,加載的JSON纔會在源代碼中可見。我真的不知道爲什麼會出現這種情況。
這裏是完整的代碼。我只在與jQuery結合使用這個腳本,所以沒有其他腳本可能會影響問題
// In combination with jquery-1.9.1.min.js
$(document).ready(function(){
$('body').addClass('js');
$.ajaxLoad = function(href, popstate){
popstate = typeof popstate !== 'undefined' ? popstate : true;
$.ajax({
type: 'GET',
url: href,
async: false,
success: function(json){
var obj = JSON && JSON.parse(json) || $.parseJSON(json);
/**
obj will look like
{
content : "content",
page_title: "Title of Page",
uri : "/path/to/appliction/"
}
*/
$('#ajax_load').html(obj.content);
if(popstate == true){
window.history.pushState({}, obj.page_title, obj.uri);
}
document.title = obj.page_title;
return false;
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log(XMLHttpRequest);
return false;
}
});
}
$(document).on("click", 'a:not(".noAjaxLoad")', function(e){
e.preventDefault();
$.ajaxLoad($(this).attr("href"), true);
});
});
...沒有人? ...「 – user3292653
」然後錯誤在源代碼中「 - 什麼錯誤? – Quentin
「加載的json字符串將在Firefox V26.0的源代碼中可見。」 - 什麼源代碼?原始網址的源代碼?您使用pushState推送的URL的源代碼?或者,通過DOM檢查器可以看到序列化的活動HTML,它根本不是* source *代碼?或者是其他東西? – Quentin