2013-11-15 51 views
0

我的DNS託管將一個域指向我的網站(向前隱形),因此在我的網站上顯示的域名就像www.mydomain.com,我的網站基於SPA(單頁)設計,頁面通過片段標識符(如#home,#aboutus等)進行訪問。用Javascript顯示哈希(或片段標識符)

問題是前進是隱形的,所以瀏覽器中的URL在瀏覽頁面時不顯示哈希。

我該如何處理Javascript?如何在瀏覽器URL中創建散列(#home,#aboutus)?

這可以很容易地用普通的JS來完成,或者我需要jQuery來做到這一點嗎?

回答

0

這裏的溫泉我經理的聯繫方法如下:

每個錨標記(或按鈕,對這個問題)得到明確的哈希值是這樣的:

<a href="#action=doSomething&param1=5&param2=10">My Title</a> 

您可以生成散列像上面很容易像這樣:

var urlHash = "#" + $.param({ action:"doSomething", param1: 5, param2: 10}); 

我根本沒有附加任何事件處理程序到這些錨點。它們實際上只是HTML中的簡單錨點。相反,我使用委託事件來捕獲hashchange事件。一個非常簡單的方法是使用JQuery BBQ plugin。這樣做有許多優點,包括您的用戶可以在SPA中爲書籤添加書籤或通過電子郵件發送這些URL,因爲它們像瀏覽器一樣顯示在普通URL中。他們也進入歷史,所以用戶可以像普通網站一樣使用後退和前進按鈕。

這裏的監聽,每當用戶點擊上面的錨hashchange將被觸發的事件示例代碼:

//Global event handler for hash change for above type of anchors 
    $(window).bind("hashchange", function (e) { 
     var action = e.getState("action"); 
     if (action === "doSomething") { 
      var param1= e.getState("param1"); 
      var param2= e.getState("param2"); 

      doSomething(param1, param2); 
     } 
     //else ignore unknown state 
    }); 
+0

我不知道如果我理解你的答案正確但我需要證明的散列在瀏覽器的URL中,儘管DNS隱形的事實向前發展。 – xybrek