假设我们有以下网址:的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部分。 –