在 Location.hash 上从 URL 中删除 #


function updateView(category) {
  console.log( window.location.hash );
  if (location.hash !== ""){
    //convert #3 to 3.
    //load video based on id
    //myArray[sanitizedHash];
  } else {
    updateCategoryLabel(category);
    currentList = updateVideosList(category);
    chooseRandomVideoFromList();
  }
}

此函数在页面加载时加载

如何在此函数中解析,以便将 location.hash 的"#"从 URL 中删除?

简而言之,我正在努力实现 www.mysite.com/3 与 www.mysite.com/#3

提前感谢!

编辑:我应该补充一点,"else"基本上是在页面加载时随机化,而不是转到直接网址。此 if 语句将在页面加载时运行以检查哈希是否存在,否则它将像往常一样随机化。

URL从"www.mysite.com/#3"更改为"www.mysite.com/3"将导致浏览器导航到新的URL,因为 www.mysite.com/3 与 www.mysite.com/#whatever 不是同一页面。

如果您只想要一个带有哈希修剪第一个字符的字符串,请尝试:

window.location.hash.substr(1)

您可以获取window.location.hash,然后将 # 替换为空字符串

 if (location.hash !== ""){
  var sanitizedHash =  window.location.hash.replace("#", "");
  //load video based on id
  //myArray[sanitizedHash];
  } 

如果您的目标不是触发页面加载,则可以使用 HTML5 历史记录 API 将网址从 www.mysite.com/#3 更改为 www.mysite.com/3,如下所示:

var id = location.hash.substr(1);
history.replaceState({id:id}, id, id);

请注意,使用替换状态,因为否则用户可以按浏览器的后退按钮并返回#3。如果要允许,请将 replaceState 替换为 pushState。希望有帮助。

相关内容

  • 没有找到相关文章

最新更新