2011-11-08 93 views
0

我的URL格式是這樣的:Javascript:檢查url是否被更改?

http://domain.in/home 
http://domain.in/books/notes 
http://domain.in/books/notes/copy 

我呼籲window.load一個JavaScript函數來檢查,如果網址已經改變與否。

如果URL已更改,則執行代碼否則將在5秒後再次返回並檢查。

我的代碼是:

window.onload = function(){ 
    setInterval(function(){ 
     page_open(); 
    }, 5000); 
}; 

function page_open(){ 
    var pages=unescape(location.href); 
    pages=pages.substr(pages.lastIndexOf("studysquare.in/") + 15); 

    // gives book if url is http://studysquare.in/book 
    //alert("pages"+pages+"\n\n recent"+recent); 

    if (pages==recent) { return;  } 
    recent=pages; 

    alert("Reached down now the code will execute."); 
} 

現在的問題是:當URL是這樣的:

http://domain.in/book 

單級深,然後一切工作正常。但是,當URL就像

http://domain.in/book/copy or http://domain.in/book/copy/notes 

然後沒有什麼作品..... 任何幫助,以檢查在JavaScript中每5秒3級深網址的變化? :)

嗨對不起,我忘了告訴...我有.htaccess文件,不允許導航頁面時,任何長度的URL後domain.in/被寫....這意味着只有單頁保持打開和不會受到URL變化...

+0

你意識到你的代碼的情況下會被破壞和新的環境中創建的瞬間一個新的頁面加載?您的代碼永遠不會檢測到更改,因爲當您導航時,它的當前實例將停止執行。 – Polynomial

+0

嗨,對不起,我忘了告訴...我有.htaccess文件,不允許導航頁面,當任何長度的url後寫入....這意味着只有單頁保持打開,不受影響通過URL更改... –

+0

你想通過檢查URL是否已經改變來實現? – grc

回答

1

當用戶更改URL,瀏覽器卸載整個頁面,他們目前是上(包括你的JavaScript,因此它停止運行),然後加載下一頁。沒有JavaScript能夠跨頁面更改運行。如果您正在瀏覽其他網頁,則無法監控網址中的更改。

趕在URL發生變化時,最好的辦法是剛剛開始加載新頁面的用戶請求之前的onUnload事件添加到body對象射擊您的JavaScript在瀏覽器卸載的頁面 - 但我我不確定這將有助於實現追蹤他們最近的頁面瀏覽量的目標(如果這就是你想要做的)。

+0

嗨,我知道這...請告訴爲什麼它不與2或3級深的網址工作,因爲URL更改不會改變我的網頁...感謝您的回覆 –

+0

它不會改變,因爲它從來沒有被調用。在你的代碼在下一頁被調用時,上下文被破壞並且你的「舊URL」不存在。把它看作是一個正在運行的過程。當你轉到不同的頁面時,它會殺死進程並啓動一個新的實例。沒有變量或數據被保存,它被全部銷燬。 – Polynomial

0

聽起來像一個歷史插件如jQuery address會幫助你很多。

它可以讓你處理該事件時,URL被改變,這樣你就可以在新的內容根據需要加載。