在location.hash上取出网址的#out

时间:2015-01-19 20:48:11

标签: javascript jquery html arrays fragment-identifier

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语句将在页面加载时运行,以检查哈希是否存在,否则它将像往常一样随机化。

3 个答案:

答案 0 :(得分:2)

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

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

  } 

答案 1 :(得分:2)

更改来自' www.mysite.com/#3'的网址;到' www.mysite.com/3'将导致浏览器导航到新的URL,因为www.mysite.com/3与www.mysite.com/#whatever不同。

如果你只想要一个字符串,其中第一个字符的哈希值被修剪,请尝试:

window.location.hash.substr(1)

答案 2 :(得分:0)

如果您的目标不是触发页面加载,则可以使用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。如果要允许,请将replaceState替换为pushState。希望有所帮助。