2012-12-19 121 views
4

我有一個基本的jQuery Mobile的頁面,如下所示:如何從外部頁面鏈接到jquery移動子頁面?

<div data-role="page" id="home"> 

</div> 
<div data-role="page" id="products"> 

</div> 

預期,除非我想從一個外部鏈接鏈接到產品頁面的所有作品。我試過了: mysite.com/mobile/default.aspx#products但只顯示主頁。有沒有辦法讓外部鏈接顯示產品頁面?

+0

類似:http://stackoverflow.com/questions/12126767/jquery-mobile-internal-hash-links-not-working –

+0

這是關於鏈接OUT的一個jqm網站......這篇文章是關於鏈接到一個jqm子頁面... EX:也許我想給我的朋友直接鏈接到我的雜貨店網站的水果'頁面'... – dsdsdsdsd

回答

4

簡短的回答是,您不能直接鏈接到多頁文檔中的特定頁面。

不幸的是,jQuery Mobile的工作方式是,當你鏈接到一個頁面有多個「頁面」時,它將默認只加載第一個頁面,加載你需要的整個外部多頁文檔,阿賈克斯(例如添加rel="external",或者如果你想使用Ajax加載頁面,您可以使用subpages plugin

至於鏈接去您應該分開你的,或通過AJAX預加載外部多頁文檔(使用我連接到上面的插件,或手動如果你是這樣傾向),然後鏈接到它作爲一個內部頁面。

Documentation

要注意,如果你是從移動頁面 是通過Ajax加載到包含多個內部頁面的頁面, 你需要添加一個rel =鏈接「外部是很重要的「或data-ajax =」false「鏈接。 這告訴框架執行整頁重新加載以清除URL中的 Ajax散列。這很關鍵,因爲Ajax頁面使用散列號 (#)來跟蹤Ajax歷史記錄,而多個內部頁面使用 散列表示內部頁面,因此在這兩種模式之間將存在散列 中的衝突。

例如,包含多個內部頁面的頁面的鏈接應該是這樣的:

<a href="multipage.html" rel="external">Multi-page link</a> 
+0

生病檢查插件,謝謝! – SirM

+0

我不認爲這是答案嗎?這個答案正在討論從一個jqm站點到另一個jqm站點的鏈接。但是,如果我通過電子郵件向我的朋友發送一個鏈接到我的網站的子頁面,這樣做並不好。 – dsdsdsdsd

+0

@dsdsdsdsd你究竟是什麼意思**你**不認爲這是答案?這是對史蒂夫邁爾*問題的回答,顯然它確實回答了他的問題,因爲他將其標記爲接受。 – Jack

1

每個「頁」添加一個數據鏈接屬性具有相同的名稱,你給ID :

<div data-role = 'page'       
    id   = 'page_baseball_hats' 
    data-url = 'page_baseball_hats'  
    >            

,那麼你應該能夠使用JQM已經生成的URL散列系統直接從鏈接外網站成「子頁面」,如:www.myjqmsite.com/#page_baseba ll_hats

第二段介紹了這種想法:http://jquerymobile.com/demos/1.0a3/docs/pages/docs-navmodel.html

+0

首先我不認爲你需要添加'data-url' [你自己](http://jquerymobile.com/demos/1.3.0-rc.1/docs/pages/page-navmodel.html) 。除此之外,這隻有在你完成一個完整的帖子(即'rel =「external」')時纔有效。 – Jack

+0

@Jack ...直到我**手動**添加數據網址,__www.myjqmsite.com/#my_subpage__對我來說不起作用 – dsdsdsdsd

+0

令人困惑的是,這個線程似乎有兩種不同的對話繼續:** conv_01:**關於某個包含指向a_multipage_jqm_site.com的鏈接的website_Z.com; ** conv_02:**關於將瀏覽器指向a_multipage_jqm_site.com/#a_subpage的a_direct_url_format。 ......我正在迴應第二個問題......現在我不確定OP究竟在想什麼。 – dsdsdsdsd

0

這是盒子的方式外..但效果很好。

$(document).on('pagebeforeshow', '#mainPage', function (e) { 
     if(window.location.hash) { 
      $('#YOUR BTN ID LINKED TO DESIRED SUBPAGE').click(); 
     } 
    }); 

這說「如果你的網址有一個散列(索引。html#subPage),如果你有一個帶有id的頁面的超鏈接按鈕(將該id設置爲$ click),(例如,你可以在你的頁腳的導航欄中有這個按鈕)轉到mainPage顯示」

更改#mainPage第一頁ID在您的多頁的URL。

變化#subPage到您的多頁的URL子頁面ID。

當然這隻會如果你只工作有一個子頁面

如果您有多個子頁面,請使用這個

$(document).on('pagebeforeshow', '#mainPage', function (e) { 
     var hash = location.hash.replace("#",""); 
     if(window.location.hash) { 
      if(hash === 'subPage'){ 
       $('#YOUR BTN ID LINKED TO DESIRED SUBPAGE').click(); 
      } 
     } 
    }); 
相關問題