我试图在我的井号之后找到字符串,这样当用户重新加载页面时,我可以只查看该字符串,然后动态加载正确的页面。我的网址看起来像这样 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/