仅删除URL的最后一个哈希值,该哈希值是使用window.location.hash添加的

问题描述 投票:0回答:1

我有一个模态框的问题,打开时会向当前网址添加一个哈希值(可能有其他哈希值)

01

这段代码对我来说很好,但在删除哈希时留下这个“#”

window.location.hash = location.hash.replace(/#About/, '');

模式打开时的示例:www.mywebsite.com/#products#About

当模态关闭时:www.mywebsite.com/#products#

我想得到什么:www.mywebsite.com/#products


02

也尝试这个工作正常,但消除所有以前的哈希

history.pushState("", document.title, window.location.pathname);

要么

history.pushState("", document.title, window.location.pathname + window.location.search);

结果:

当模态打开时:www.mywebsite.com/#products#About

当模态关闭时:www.mywebsite.com(我不想删除之前的哈希)


这是我的代码:

$(".barMenuFooter a.buttonShowDetail").on('click', function(){  
$(this).toggleClass('active');
if ($(this).hasClass("active")) {
    window.location.hash = location.hash + "#About";
    openAbout();    
}
 else {
    window.location.hash = location.hash.replace(/#About/, '');
    closeAbout();   
   } 
 });

我只想完全删除添加的最后一个哈希(没有#)而不重新加载页面。

javascript jquery url hash window.location
1个回答
0
投票

您可以使用正则表达式查找网址中的最后一个“哈希”:

 > "site.com/#place1/#place2".replace(/\#$|\#[A-z0-9]*$/, "")
 'site.com/#place1/'

 > "site.com/#place1#".replace(/\#$|\#[A-z0-9]*$/, "")
 'site.com/#place1'

 > "site.com/#place1/#".replace(/\#$|\#[A-z0-9]*$/, "")
 'site.com/#place1/'

/\#$/这将匹配出现在字符串末尾的最后一个哈希(#)(url)。

/\#[A-z0-9]*$/这将匹配字符串(url)末尾出现的最后一个哈希(#)以及后面的任何字符或数字。

© www.soinside.com 2019 - 2024. All rights reserved.