2015-04-07 35 views
0

我正在開發一個使用製表符的Web應用程序。我運行了一個似乎很小的問題,但我一直無法找到解決方案,而且我擔心這代表了我的代碼存在較大的問題。Dojo Tabs - 填充w/HTML/JS和錨鏈接

我的應用程序有一個主頁面,其中包含一個包含多個內容窗格的標籤容器,然後插入爲兒童。我認爲讓每個內容窗格加載一個外部HTML文件並以這種方式加載它是一個很好的解決方案 - 它似乎提供了模塊化設計並允許輕鬆更改單個選項卡的內容。我現在遇到的問題是,當一切正常加載時,我無法在選項卡內或選項卡之間提供錨鏈接。以下是一些示例代碼:

var tabs = new TabContainer({ 
    style: "height: 100%; width: 100%;" 
}, "tab-container"); 
tabs.startup(); 
var metadata = new ContentPane({ 
    title: "Metadata", 
    id: "Metadata" 
}); 
/* repeat for the non-metadata content panes */ 
request.get("/js/viewer/templates/splash.html").then(function (results) { 
    splash.set("content", results); 
}); 
/* repeat for each pane */ 

對於我的元數據頁面,我希望它包含有關我向用戶提供的數據集的信息。理想情況下,它會有一個帶有鏈接到正確條目的鏈接的目錄。然而,當我實現一個錨鏈接,就像這樣:

<a href="#test">Click me to jump down the page!</a> 
<!-- some content here --> 
<div id="test">We made it!</div> 

鏈接是可以點擊的,它實際上是把你帶到正確的位置,但似乎在一個新的框架,要求用戶總是加載此如果他們希望做其他事情,可以重新加載頁面。我試着玩標籤屬性,但它是無濟於事。我也希望能夠在選項卡之間進行鏈接(例如,如果用戶正在查詢我提供的查詢頁面之一,然後想知道數據集來自哪裏或其他信息)。

這裏是在發生的事情簡單的imgur專輯:http://imgur.com/a/JCnlH

點擊第一個圖像中的鏈接後,你發下來的頁面。但是,即使向後滾動,頁面的標籤欄和導航欄也會完全消失。我不知道這是爲什麼。

所以,這是一個長期的問題,但這裏是它的核心:

我在做什麼毛病錨鏈接?

回答

0

在我的情況下,這種行爲似乎是由具有的height: 100%財產交互我的網站的身體overflow: hidden CSS屬性的相互作用引起我的標籤容器。我沒有意識到overflow: hidden屬性被設置,因爲它是我使用的框架的一部分。通過改變溢出屬性,我已經能夠實現所需的行爲。

0

要回答你的第一個問題:

你應該把所有的JavaScript你的主網頁內,內部沒有諧音。這不被認爲是JavaScript的最佳做法,因爲這意味着您將不得不通過eval()的內容,並且通常當您不需要時就開始這樣做,那麼您做錯了什麼。

在這種情況下,您可以輕鬆地將所有JavaScript代碼添加到主頁面。如果您需要等待打開或加載特定選項卡,則可以使用dijit/layout/ContentPane小部件上的onShowonLoad事件。


此外,當您使用ContentPane時,您應該使用正確的setter來爲其添加內容/ HTML。

,而不是做:

request.get("/js/viewer/templates/splash.html").then(function (results) { 
    dojo.byId("Splash").innerHTML = results; 
}); 

你應該做的事:

request.get("/js/viewer/templates/splash.html").then(function (results) { 
    splash.set("content", results); 
}); 

或者,如果你沒有一個參考了對splash變量,你應該使用registry.byId("splash").set("content", results)


關於超鏈接,我不知道。我沒有得到同樣的行爲,所以你可以進一步解釋一下嗎?

這裏的(據我可以看到)工作示例:http://jsfiddle.net/n4515tsz/

+0

感謝您的評論。我檢查了你的JSfiddle,這正是我要*做的事情,但似乎並沒有發生。我製作了一張簡單的imgur專輯,我正在編輯我的問題,試圖說明究竟發生了什麼。我已經做出了其他你所建議的改變,(並且感謝關於使用onLoad的建議......完全放棄了我的想法!)非常感謝 –

+0

難道你在這些鏈接上有'target =「_ blank」'或者所以? – g00glen00b

+0

他們沒有。我嘗試添加'target =「_ blank」',它們在一個新的瀏覽器選項卡中打開(這與我看到的問題不同 - 它們劫持了當前的瀏覽器選項卡)。不過,強制'target =「_ self」'並沒有解決問題。我發佈的代碼第二代碼塊是我正在使用的確切代碼,除了一些刪除Lorem Ipsum來填充空間。我希望我已經在您的網站上爲您+1,因爲您已經贏得了它。 –