[英]JavaScript retrieve string after hash
我正在嘗試在我的哈希符號后找到字符串,因此當用戶重新加載頁面時,我只能查看該字符串,然后動態加載正確的頁面。 我的網址看起來像這樣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');
}
如果我在oldLoc
變量中放一個類似http://mysite.com/#!/account/
的值,這會很好,但是如果我放的是它,則會出現此錯誤:
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)
您可以使用
window.location.hash
window.location對象具有一個hash屬性,該屬性包含has符號之后(包括其中)的所有內容。 要獲取#號之后的所有內容,請刪除開頭的哈希符號:
window.location.hash.substring(1)
還可以考慮看看一些JavaScript路由庫,例如,
您可以嘗試看看Crossroads和Hasher庫。 您可以將它們放在一起做我想做的事情。
// setup your routes
crossroads.addRoute('newsfeed.php', function() {
// do some stuff
});
//setup hasher
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes
hasher.init(); //start listening for history change
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.