代码之家  ›  专栏  ›  技术社区  ›  Peter

如何使用javascript删除最后一个URL位置哈希

  •  0
  • Peter  · 技术社区  · 7 年前

    正在我的网站上使用引导模式,模式打开时会添加使用模式元素ID和我传递的数据的URL。

    我的问题是,当一个按钮被单击时,我如何删除最后添加的哈希,就像当浏览器后退按钮被单击时,窗口将导航回删除最后一个哈希。

    如何使用javascript删除最后一个URL位置,我希望每次单击按钮时,将删除URL哈希列表中的最后一个哈希。

    function ensureHash(newHash){
        var lochash = location.hash;
        if(lochash || lochash != ""){newHash = lochash + "&" + newHash;}
        if (window.location.hash) {
            return window.location.href.substring(0, window.location.href.lastIndexOf(window.location.hash)) + newHash;
        }
        return window.location.hash + newHash;
    }
    window.location.href = ensureHash("modalElementId=modalAction");
    

    https://example.com/app?#mElem1=mAcct1&#mElem2=mAcct2&#mElem4=mAcct5

    我试过这样做,但效果不太好

    function ensureRemoveHash(){
     var gethash = location.hash;
     gethash = gethash.slice(0, gethash.lastIndexOf('&'));
     return gethash;
    }
    window.location.href = ensureRemoveHash();
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   mplungjan    7 年前

    像这样?

    var str = "https://example.com/app?#mElem1=mAcct1&#mElem2=mAcct2&#mElem4=mAcct5"
    function dropHash(str) {
      if (str.indexOf("#") ==-1) return str;
      var arr = str.split("#");
      arr.pop();
      return arr.join("#");
    }
    
    console.log(str);
    str = dropHash(str)
    console.log(str);
    str = dropHash(str)
    console.log(str);
    str = dropHash(str)
    console.log(str);

    或者你只是让按钮替换哈希?

    var url = new URL("https://example.com/app")
    console.log(url);
    url.hash="mElem2=mAcct2"
    console.log(url);
    url.hash="mElem3=mAcct3"
    console.log(url);
    推荐文章