Javascript 正在从location.hash上的url中取出

Javascript 正在从location.hash上的url中取出,javascript,jquery,html,arrays,fragment-identifier,Javascript,Jquery,Html,Arrays,Fragment Identifier,此函数在页面加载时加载 如何在该函数中进行解析,以便从URL中删除location.hash 简言之,我试图实现www.mysite.com/3而不是www.mysite.com/3 提前谢谢 编辑:我应该补充一点,“else”基本上是页面加载的随机性,而不是直接访问url。此if语句将在页面加载时运行,以检查哈希是否存在,否则它将像往常一样随机化 您可以获取window.location.hash,然后用空字符串替换 function updateView(category) { cons

此函数在页面加载时加载

如何在该函数中进行解析,以便从URL中删除location.hash

简言之,我试图实现www.mysite.com/3而不是www.mysite.com/3

提前谢谢

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

您可以获取window.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();
  }
}
您可以获取window.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从“www.mysite.com/3”更改为“www.mysite.com/3”将导致浏览器导航到新的URL,因为www.mysite.com/3与www.mysite.com/where不是同一页面

如果您只需要一个具有哈希值第一个字符的字符串,请尝试:

 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/where不是同一页面

如果您只需要一个具有哈希值第一个字符的字符串,请尝试:

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

  } 

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

window.location.hash.substr(1)

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

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

window.location.hash.substr(1)

请注意,使用了replaceState,因为否则用户可以按返回按钮返回浏览器并返回3。如果希望允许,请将replaceState替换为pushState。希望对您有所帮助。

同时,您可能希望了解如何使用.htaccess重定向和屏蔽http://example.com/someID 到http://example.com/?someID 因此,您可以使用PHP获取视频ID,而无需为每个页面生成新页面。您只需要一个index.php页面,该页面将根据array\u keys$\u GET的内容加载视频。这还有一个好处,就是不需要用户提供JavaScript。是的,我就是这么想的。但据我所知,window.location.hash似乎“附加”了一个hashtag——附加到任何散列值上。我要问的是如何保留从哈希生成的值,但从输出中删除哈希标记。如果有意义的话..在这种情况下,您可以只修剪window.location.hash的第一个字符。我已将此添加到我的答案中。@h0bb5简而言之,您不能。但是,您可以修改URL,而无需通过以下方式重新加载页面:;但这在IE9-中不受支持。我会认真考虑做这个服务器端,因为它是非常干净的,不需要从你的用户的JS,然后当人们直接导航到你的URL,他们将实际加载他们想要它加载。因为按照您的操作方式,如果有人键入example.com/3,它不会将他们带到example.com/3并重定向他们。404:嗯,好吧,是的,我想我知道怎么会更难。我不知道,当一个新的图像/视频被随机分配时,我真的想弄清楚如何更改url,但是页面的其余部分将保持静态。在服务器端执行此操作的最佳方法是什么?结合使用.htaccess进行重定向和屏蔽,您可能希望了解一下http://example.com/someID 到http://example.com/?someID 因此,您可以使用PHP获取视频ID,而无需为每个页面生成新页面。您只需要一个index.php页面,该页面将根据array\u keys$\u GET的内容加载视频。这还有一个好处,就是不需要用户提供JavaScript。是的,我就是这么想的。但据我所知,window.location.hash似乎“附加”了一个hashtag——附加到任何散列值上。我要问的是如何保留从哈希生成的值,但从输出中删除哈希标记。如果有意义的话..在这种情况下,您可以只修剪window.location.hash的第一个字符。我已将此添加到我的答案中。@h0bb5简而言之,您不能。但是,您可以修改URL,而无需通过以下方式重新加载页面:;但这在IE9-中不受支持。我会认真考虑做这个服务器端,因为它是非常干净的,不需要从你的用户的JS,然后当人们直接导航到你的URL,他们将实际加载他们想要它加载。因为按照您的操作方式,如果有人键入example.com/3,它不会将他们带到example.com/3并重定向他们。404:嗯,好吧,是的,我想我知道怎么会更难。我不知道,当一个新的图像/视频被随机分配时,我真的想弄清楚如何更改url,但是剩下的时间 e页面将保持静态。您认为在服务器端执行此操作的最佳方法是什么?