2015-06-18 76 views
0

我正在開發一個新網站,雖然我希望儘可能方便地導航,但我也想用重疊頁面的某種格式。在div上加載外部網頁並同時獲取特定網址

我的想法是在當前頁面上有文章在點擊時在浮動div上打開。這不是真正的問題,因爲使用jquery .load()它很容易做到,但我的問題是它不會修改當前的url,所以它仍然是www.myweb.com例如,我想當文章被打開時使它像www.myweb.com/current-article一樣。一旦你有這個特定的網址的文章,如果它是共享的,打開該鏈接的人將進入該網站的文章打開它。

我希望這一切是有道理的,但一個很好的例子可以在USA TodayPlay.Spotify

我使用一把umbraco 7和JavaScript的網站上找到。任何想法如何可以完成?

+0

http://stackoverflow.com/questions/16980735/jquery-history-js-vs-jquery-hashchange – mplungjan

回答

0

其稱爲哈希基地導航

location.hash = "#myHash"; //sets the url plus hash 

下面是如果用戶手動更改URL或發射使用後退按鈕

window.onhashchange = function() 
{ 
    if (location.hash === "#myHash") 
     { 
    doSomething(); 
     } 
} 
+0

OP不想井號標籤。 –

+0

基於主題標籤的解決方案可以工作,但對於我們的項目,我們需要一些不依賴於自定義URL的內容。 Morten的樣本似乎更適合於此。但是,我也不知道這個系統,我相信這會幫助我完成其他任務!呵呵,謝謝。 – MYbuddy

+0

@Mybuddy很高興幫助 – saj

0

這實際上是一個大而複雜的任務,要正確地實現。

我建議你使用Backbone.Router http://backbonejs.org/#Router。它在「新」瀏覽器中使用歷史記錄API,並在舊版瀏覽器中使用標籤。

一些僞代碼:

首先定義您的路線。它會趕上下www.myweb.com/articles/*所有頁面

var MyRouter = Backbone.Router.extend({ 

    routes: { 
    "articles/:page": "loadPage" 
    }, 

    loadPage: function() { 
    var div = $("#overlay"); 
    div.html($.load("your page")) 
    div.show() 
    } 
}); 

你需要實現一些邏輯來測試,如果加載的頁面是不是在文章/。*

初始化MyRouter當頁面加載:

var router = new MyRouter(); 
router.start() 

疊加頁面將打開,當你打www.myweb.com/articles/cool-article

如果喲ü要打開從父頁面的頁面,只需撥打

$("button").click(function(){ 
    router.navigate("articles/cool-article", {trigger: true}); 
}); 
+0

謝謝,Morten。你是對的,這似乎是我需要使用的。我將在此之前開始玩這個遊戲,以便在結束這個決定之前看到。乾杯! – MYbuddy

相關問題