簡體   English   中英

JavaScript哈希后檢索字符串

[英]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.js (僅路由)
  • Backbone.js (提供了通用的客戶端應用程序結構,其中包括具有pushState支持的有用路由器)

您可以嘗試看看CrossroadsHasher庫。 您可以將它們放在一起做我想做的事情。

// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM