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。希望有帮助。