假設我們有以下網址:的Javascript:有選擇地刪除從URL中的散列(或散列),從而使URL仍然有效或可用
1. http://example.com#hash0
2. http://example.com#hash0#hash1
3. http://example.com#hash0/sample.net/
4. http://example.com#hash0/sample.net/#hash1
5. http://example.com#hash0/image.jpg
6. http://example.com#hash0/image.jpg#hash1
7. something.php#?type=abc&id=123
8. something.php#?type=abc&id=123#hash0
9. something.php/?type=abc&id=#123
....................................
多這樣的排列,你得到了點。如何從這類URL中選擇性地移除「無關」哈希而不是影響這些URL的功能(以便它們仍然是完整鏈接或圖像)?
例如,從這個列表中的數字1開始,我希望從#3 hash0和#hash1的2中刪除#hash0,從3開始我想保留它,因爲它後面跟着路徑的延續(是的,這是可能的,檢查here),從4刪除#hash1,從5保留它,但從6刪除#hash1,...,從9我認爲保留它,因爲它可能與查詢有關(雖然不確定),依此類推。基本上我希望只刪除那些沒有任何可用的散列(如路徑,查詢,圖像文件等) - 像#top,#bottom等「無關」散列指的是當前頁面。我正在研究的東西,也涉及從相對的獲取絕對URL(藉助於新的錨點的href或新的URL對象的href),所以一個解決方案(如here),可以「融入」與location object's properties(如。協議,。主機,.pathname,。搜索,.hash等)是更可取的 - 因爲它可能是更「可信」,因爲它是內置的,但一個好的(和更短的)正則表達式是可以接受的以及。總而言之,較短的解決方案是可取的,因爲我不希望我的項目爲分析整個當前URL時遇到的每個鏈接或圖像鏈接做額外的不必要的工作。
你怎麼知道哪個散列 「無關」?他們改變了嗎?我首先看'String.replace()' – mhodges
@mhodges Hashes後面沒有有效的路徑/查詢/圖像鏈接部分在我的情況下是「無關緊要的」。例如,3,5或7(甚至9)的散列值或4,6或8中的第一個散列值是相關的,因爲它們之後是「哈希」以外的URL部分。 –