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