JavaScript 在哈希后检索字符串

标签 javascript jquery

我试图在我的井号之后找到字符串,这样当用户重新加载页面时,我可以只查看该字符串,然后动态加载正确的页面。我的网址看起来像这样 http://mysite.com/#!/account/。我如何只检索/account/?我试过使用这个:

var oldLoc = window.location,
patt = /#!(.+)/,
newLoc = oldLoc.match(patt)[1]; // This returns `/account/settings`

if (newLoc == '' || newLoc == '#!/' || newLoc == '/#!' || newLoc == '/#!/') {
    $('#reload_section').load('main.php');
} else if (newLoc == '/newsfeed/') {
    $('#reload_section').load('newsfeed.php');
} else if (newLoc == '/account/') {
    $('#reload_section').load('account.php');
} else if (newLoc == '/search/') {
    $('#reload_section').load('ajaxsearch.php');
}

如果我将像 http://mysite.com/#!/account/ 这样的值放在 oldLoc 变量中,但如果我把我拥有的值它给了我这个错误:

TypeError: 'undefined' is not a function (evaluating 'oldLoc.match(patt)')

1)为什么这不起作用,我已经尝试了所有不同的 window.location、document.location 组合,但没有任何效果。
2)有没有更简单的方法来找到页面的哈希值,然后加载正确的页面,如上所示?

谢谢!

最佳答案

使用 window.location.hash。对于 URL http://mysite.com/#!/account/,它将返回 #!/account/。现在,只需使用正则表达式将前面的 #! 去掉:

window.location.hash.replace(/^#\!/,"")

上面的代码会给你/account/

编辑:你也可以使用这个:

window.location.hash.substring(2)

关于JavaScript 在哈希后检索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287658/

相关文章:

javascript - 显示两个日期之间的推文

jquery - 在模态中播放视频

javascript - 实现一个迭代数组的运行器

javascript - Jquery Accordion 无法在 IE7 中工作,语法问题?

javascript - 协助使用正则表达式 Javascript

javascript - 如何使用 AJAX 和 jQuery 发布数据?

Javascript 脚本不适用于 html

javascript - 加载特定元素的 AJAX 内容(将 DOM 元素传递给 AJAX 回调函数)

javascript - 如何控制 plotly.js 中轨迹的显示顺序?

javascript - PHP 生成的输出未触发 JS 函数