在 location.hash 上从 url 中取出#

taking the # out of url on location.hash

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();
  }
}

此函数在页面加载时加载

如何在该函数内部进行解析,以便从 URL 中取出 location.hash 的“#”?

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

提前致谢!

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

你可以获取window.location.hash然后用空字符串替换#

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

  } 

将 URL 从 'www.mysite.com/#3' 更改为 'www.mysite.com/3' 将导致浏览器导航到新的 URL,因为 www.mysite。com/3与 www.mysite.com/#whatever.

的页面不同

如果你只想要一个字符串的第一个字符的散列修剪尝试:

window.location.hash.substr(1)

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

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

请注意,使用了 replaceState,否则用户可以按浏览器的后退按钮并返回到 #3。如果你想允许,用 pushState 替换 replaceState。希望对您有所帮助。