2013-03-04 69 views
3

我試圖尋找這30分鐘,所以我道歉,如果它被問了。的Javascript:document.url無錨(哈希)部分

我有一些Ajax返回一組結果和被點擊時一個簡單地重新加載網址與附加數據的URL,PHP獲得下一個頁面上。問題是,如果用戶點擊一些內置的錨定(我不能刪除),該網址會something.com#location1所以追加?action=next會把它變成something.com#location1?action=next其在瀏覽器解釋爲一個長的錨,而不是一個新的URL實際上直接至。

如果用戶點擊從來沒有錨定器部分此重定向工程順利使用window.location=document.url+"?action=next"

有沒有辦法刪除錨點(包括散列標籤)從現有的網頁的網址是什麼?

解決

使用Michael W's answer我能解決這個問題。我簡單地更換這行:

window.location=document.url+"?action=next"

有了這個:

window.location=document.location.href.match(/(^[^#]*)/)[0]+"?action=next"

感謝您的幫助!

+0

[這些結果都沒有幫你?](https://開頭www.google.com/search?q=javascript+remove+hash+from+url) – 2013-03-04 02:20:55

+0

我與邁克爾W的解決方案(稍作修改)一起使用,標記爲這樣並編輯原始問題以包含未來讀者的解決方案。 – Bing 2013-03-04 05:19:41

回答

4

你可以匹配的位置的主題標籤預部分:

document.location.href.match(/(^[^#]*)/) 
+4

對於那些閱讀:這返回一個數組。指定第一個元素爲我工作: 'window.location = document.location.href.match(/(^ [^#] *)/)[0]' 我完全中止使用'document.url'。 – Bing 2013-03-04 05:14:45

1

location對象可以通過獨立的組件來訪問,你可以使用那些你喜歡重建URL與許多或幾件。

的官方文檔離線此時卻this site似乎有它。

如果這些是你正在生成的內部鏈接,你只需要生成一個相對的url即可,也許即使只是location.pathname就足夠了。你標記你的問題,如JavaScript,但因爲你在PHP中編碼

注意,我懷疑你需要的是產生在PHP端這些鏈接。

8

這似乎稍微簡單:

document.URL.replace(/#.*$/, "")