2011-08-10 93 views
3

我需要語法幫助。幫助與window.history.pushState

我的網站加載的博客文章使用AJAX的#board專區內,我通過點擊#關閉關閉。當我加載帖子時,url變成這樣http://www.visualise.ca/#!/anne-au-cherry,我想在我關閉帖子時回到http://www.visualise.ca/。下面給我http://www.visualise.ca/#/

$("#close").live("click", function(event) { 
    $("#board").slideUp("slow"); 
    window.location.hash = "#/"; 
    window.history.pushState(null,null,site_url+"/"); 
    return false; 
}); 

1)有人可以幫忙嗎?

2)如果瀏覽器不支持html5會怎麼樣?

非常感謝您的時間和幫助。

UPDATE:這個作品,有我在 'SITE_URL' 變量一個錯字。

回答

4

pushState的不超過散列運算。如果你希望它兼容html5,你需要使用散列。

pushState的是改變URL而不改變頁面:

如果你看到的歷史作爲一個數組,history = [];

你打開瀏覽器的空FrontPage和去page1.html

現在歷史= ['page1.html']

如果您從page1.html使用url page2.html觸發pushState,則歷史記錄現在爲['page1.html','page2.html'],地址欄顯示page2.html。

如果瀏覽器不支持pushState,它什麼也不做。因此,對於你的例子:

$("#close").live("click", function(event) { 
    $("#board").slideUp("slow"); 
    window.history.pushState(null, null, site_url+"/"); 
    return false; 
}); 

當你加載你的Ajax:

window.history.pushState(null,null,site_url + "/" + ajax_url); 

如果你想與哈希操作,你可以做這樣的事情:

$("#close").live("click", function(event) { 
    $("#board").slideUp("slow"); 
    window.location.href = "#/" 
    return false; 
}); 

當你加載你的AJAX:

window.location.href = "#/" + ajax_url 

如果您使用pushState的注意網址可最終運子文件夾指向你沒有,因此,你需要某種的.htaccess重寫代碼

+0

我想我的瀏覽器更改URL無需重新加載頁面時我點擊#close。我想要的網址是http://www.visualise.ca/,但它給了http://www.visualise.ca/#// – Gab

+0

那麼window.location.href =「」那麼呢? – andlrc

+0

這都是我的錯......在我的site_url變量中有一個類型...!對不起,我讓你失去了寶貴的時間:-( – Gab