使用 JS/jQuery 从 URL 中删除哈希

Posted

技术标签:

【中文标题】使用 JS/jQuery 从 URL 中删除哈希【英文标题】:Removing hash from URL using JS/jQuery 【发布时间】:2019-01-22 00:03:57 【问题描述】:

我有以下代码:

if(window.location.hash)
    var hash = window.location.hash.substring(1);

var hash = window.location.hash.substring(1);
if(hash.length > 0 && hash.search('^y([0-9]+)g([0-9]+)$') >= 0)

    $('#recs').removeClass('closed');
    $('#rec_select_year').val(hash.match('y([0-9]+)')[1]);
    $('#rec_g_select').val(hash.match('g([0-9]+)')[1]);
    $('html, body').animate(
        scrollTop: $('#docs').offset().top + 200
    , 0);
    changeDocuments();

else

    changeDocuments();

$('.filter').change(function() 
    updateDocumentList();
    var years = $('#rec_select_year').val();
    var groups = $('#rec_g_select').val();
    hash = 'y' + years + 'g' + groups;
);

我在从 URL 中删除哈希时遇到了困难。我需要将 url 更改为此 http://codify.org/group/y2018g7

出于这个原因,我使用 substring() 方法来删​​除哈希,但是它会影响 url 并更改为 http://codify.org/group/,这基本上删除了 URL ../y2018g7 的结尾

如何将哈希更改为显示 http://codify.org/group/y2018g7 的 URL?

【问题讨论】:

您的两个示例网址中都没有哈希部分。 您能告诉您要更改的原始网址是什么吗? @McRist 原来的 URL 是 codify.org/group/#y2018g7。我试图将其更改为codify.org/group/y2018g7。但是,我不能这样做 【参考方案1】:

使用RegExp# 替换为url,如下所示。

var url =  "codify.org/group/#y2018g7";
var regx = "/#/g";
var newUrl= url.replace(eval(regx), '');
console.log(newUrl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

注意:上面 RegExp 中的 g 修饰符是用于全局匹配(查找所有匹配而不是在第一个匹配后停止)

【讨论】:

【参考方案2】:

如果您想用空字符串替换所有哈希,这将起作用。

window.location.href.split("#").join('')

【讨论】:

以上是关于使用 JS/jQuery 从 URL 中删除哈希的主要内容,如果未能解决你的问题,请参考以下文章

如何在不刷新页面的情况下使用 JavaScript 从 window.location (URL) 中删除哈希?

如何从 ui-router 中的 url 地址中删除哈希标签 (#)

Angular 2 从 URL 中删除哈希 (#)

在 Laravel Homestead 中使用 Vue.js 时从 URL 中删除 # 哈希

如何从网址中删除哈希“#”符号?

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