你可以這樣做。背後的想法是將HTML文件包含在HTML文件中。我至少可以通過3種方式說明這種情況的發生,但我個人完全只是驗證了第三種方式。
首先出現的是一個jQuery next sample is taken from this thread
a.html:
<html>
<head>
<script src="jquery.js"></script>
<script>
$(function(){
$("#includedContent").load("b.html");
});
</script>
</head>
<body>
<div id="includedContent"></div>
</body>
</html>
b.html:
<p> This is my include file </p>
另一種解決方案,我發現這裏並沒有需要jQuery但仍未測試:there is a small function
我的解決方案是純HTML5,可能在舊版瀏覽器中不受支持,但我不關心它們。
添加在HTML的頭,鏈接到你的HTML模板與
<link rel="import" href="html/templates/Hello.html">
添加模板代碼中的Hello.html。不是使用這個工具功能:
loadTemplate: function(templateName)
{
var link = document.querySelector('link[rel="import"][href="html/templates/' + templateName + '.html"]');
var content = link.import;
var script = content.querySelector('script').innerHTML || content.querySelector('script').innerText;
return script;
}
最後,調用在你需要它的功能:隨時可以使用
var tpl = mobileUtils.loadTemplate('hello');
this.templates.compiledTpl = Template7.compile(tpl);
現在你已經編譯模板。
======= UPDATE
建設我的項目的ios後,我發現,進口環節沒有從所有的瀏覽器都支持但我沒有做它iphone工作。所以我嘗試了方法2。它的工作原理,但你可能會看到它得到請求,我不喜歡。 jquery的負載似乎有相同的缺陷。
於是我想出了方法號4
<iframe id="iFrameId" src="html/templates/template1.html" style="display:none"></iframe>
,現在我的loadTemplate功能
loadTemplate: function(iframeId, id)
{
var iFrame = document.getElementById(iframeId);
if (!iFrame || !iFrame.contentDocument) {
console.log('missing iframe or iframe can not be retrieved ' + iframeId);
return "";
}
var el = iFrame.contentDocument.getElementById(id);
if (!el) {
console.log('iframe element can not be located ' + id);
return "";
}
return el.innerText || el.innerHTML;
}
這是否意味着它不可能或很難有那些模板代碼爲html格式的另一個HTML文件? – SonicC
您是否考慮過使用服務器端編碼?例如,使用PHP,可以將HTML代碼放在不同的PHP文件中。我們這種方法可以同時具備以下兩種模式:(1)HTML格式的模板和(2)單獨的文件模板。 –