2009-07-15 47 views
0

我有一個用例,我將頁面焦點設置爲特定元素(之前有一個錨點)。當用戶沒有登錄時,會有一個重定向到登錄頁面,登錄後,用戶被重定向到有問題的頁面,URL編碼。HTML編碼鏈接和錨點

我看到,鏈接#目標鏈接的URL按預期工作(側重於元素),而URL編碼鏈接鏈接%23target沒有。這是預期的行爲?

編輯:如果這是預期的行爲,是否有解決方案專注於目標?在中,圍繞URL編碼的方式?

編輯添加更多的信息:
假設有一個代碼

page1.html 
... html before the anchor ... 
<a name="test">Some code</a> 
... html after the anchor ... 

我訪問該頁面page1.html%23test。這與page1.html#test的工作方式不同。有沒有實現這個jQuery方法?即使在url編碼之後,location.hash是否包含測試?我無法控制更改網址編碼。

編輯:

,因爲我知道它命名錨我想去頁面重定向後,我做了一個

window.location.hash = namedAnchor 

來解決這個問題。該JS行只有在客戶成功登錄後纔會輸出。解決了我的問題,但不是我尋找的通用答案。我正在尋找一種避免在URL編碼中轉義#的方法。

回答

5

是的。將#23編碼爲有效地說:「我的意思是一個普通的舊」#「字符,而不是一個URL片段」。其他保留字符也是如此:轉義它們會阻止它們在URL中具有特殊含義。

在您的情況下,您希望在將URL作爲參數傳遞到登錄頁面時對其進行編碼,但是您的登錄頁面應該在執行重定向之前解碼URL。

+0

謝謝!這至少回答了我的部分問題。和in一樣,#是URL編碼時的行爲。 – Arvind 2009-07-17 08:42:57