2012-01-25 40 views
6

我正在使用PhoneGap和jQuery Mobile創建本機Android應用程序。jQuery和PhoneGap - 包含HTML文件客戶端與HTML或JS?

當我創建一個多頁面頁面時,我不會一直包含相同的導航欄。 所以我試圖包括一個(S)的HTML。但它不起作用。 這就是我這麼遠的嘗試:

<!--#include file="navigation.inc.html" --> 
<!--#include virtual="navigation.inc.html" --> 
<!--#include file="navigation.inc.shtml" --> 
<!--#include virtual="navigation.inc.shtml" --> 

該頁面未放置在(網絡)服務器上。 當navigation.inc.shtml不是服務器時,是否可以使用html或javascript包含該文件?

回答

4

我遇到了同樣的問題。據我所知,Android忽略服務器端包含。

我已經越來越接近在此基礎上answerload的答案,但我採取了略微不同的方法:

無論你需要包括一個外部文件:

<div data-include="footer"></div> 

然後,在我的(多頁)index.html結尾處.html

$('div[data-include]').each(function() { 
    $(this).load($(this).attr('data-include') + '.html').trigger('create'); 
}); 

問題是它不適用於初始頁面視圖。以後的任何頁面都很棒。

+0

請參閱:http://stackoverflow.com/questions/7974630/jquery-mobile-include-footer-from-external-file – tomo7

+0

你搖滾,這個作品很棒.. –

1

我正在尋找一種一次性寫入數據角色=「footer」的方法,並使其工作,如下所示。我不喜歡它1.)它不是來自包含文件,所以2.)導航欄代碼有點難以閱讀和維護。 (此代碼不在document.ready中。)

var myFooter = '<div data-role="navbar"><ul><li><a href="#myPageName" >Send</a></li><li><a href="#myPageTwo" >Set Up</a></li><li><a href="#myPageThree" >Help</a></li></ul></div>'; 

// use this code pointing to each data-role="footer" where you want this navbar 
$('div#myPageName').live("pagebeforecreate", function(){ 
     $('div#myFooterName').html(myFooter) 
}) 

pagecreate事件也起作用。

1

我使用了Jhof上面建議的客戶端JavaScript代碼。

爲導航標題模板例如:

<body onLoad="initialization()"> 
.... 
    <div template-include="nav-header"> 
    </div> 
    <script type="text/javascript"> 
    function loadTemplates() 
    { 
    $('div[template-include]').each(function() { 
     $(this).load('tpl/' + $(this).attr('template-include') + '.html').trigger('create'); 
}); 
    } 
    function initialization() { 
     .... 
     loadTemplates(); 
     .... 
    } 
    </script> 

<body> 

我創建了一個初始化函數,我打電話給我所有的初始化函數爲loadTemplates()

initializationFunctionbody.onLoad事件調用。 onLoad事件在html解析結束時觸發!

因此,它也在最初的頁面視圖中工作。