2012-02-29 104 views
0

我知道使用自定義html標記由於各種原因是不合適的,但我想運行一個特定的情況,可能需要自定義html標記,並希望得到其他方面的信息,或者可能更好實現我的目標的方式。HTML模板(自定義)標記

在我的代碼中,我有我稱之爲模板的東西,它由一個帶有模板的div標籤和一個附加的隱藏類組成。這在屏幕上是不可見的,但基本上這些「模板」標籤包含我在JavaScript中使用的HTML來創建各種不同的項目。我這樣做,以便我可以在html中設置我的模板樣式,而不必擔心將CSS與Javascript混合。

<!-- TEMPLATE --> 
<div class="template hidden"> 
    <span>Random Container</span> 
    <a href="#">Random Button</a> 
</div> 

在javascript中我會做類似

var template = document.getElementById("template"); 
var clone = template.cloneNode(true); 
clone.removeClass("template hidden"); 

我寧願能夠做這樣的事

<template class="hidden"> 
    <span>Random Container</span> 
    <a href="#">Random Button</a> 
</template> 

所以,如果我有一個DIV我多模板可以抓住他們,而不必爲他們提供獨特的名字。當然,我需要實施的理由要比這更深入,但沒有必要浪費你的時間與細節。我們只是說它將幫助清理我的Javascript ALOT。

由於自定義模板標記是隱藏的,實際上只不過是一個容器,可以方便地在javascript中調用document.getElementsByTagName(「template」);這可以嗎?我可能會在模板被實現爲html的情況下爲該標籤加上自定義名稱的前綴。

+1

沒有像「自定義HTML標記」那樣的東西。要麼是HTML,要麼不是。 ([它是「element * type * name,dammit」](http://web.archive.org/web/20110717185451/http://www.flightlab.com/~joe/sgml/faq-not.txt) :-)。) – 2012-02-29 21:23:03

+0

是的,我明白了,謝謝。如果你想編輯我的問題來澄清這種感覺,但我認爲它很自我解釋。 – ryandlf 2012-02-29 21:25:26

+0

您可能認爲您的模板不可見,但我告訴您它是 - https://en.wikipedia.org/wiki/Lynx_%28web_browser%29。 – 2012-02-29 22:00:30

回答

1

爲什麼不使用HTML5的data attributes之一?它們用於存儲私人數據或自定義信息。

對於您的情況,您可以添加data-type="template"data-name="template",然後在此基礎上進行搜索和刪除。一個簡單的功能,就像你會寫,以刪除您的<template>標籤,但沒有違反規則。

因此,使用你的榜樣,<div data-type="template" class="hidden"></div>

+0

我是否使用div。JS中的getAttribute(「數據類型」)可以像其他任何自定義屬性一樣進行搜索? – ryandlf 2012-02-29 21:30:01

+0

Yep - 'div.getAttribute(「data-type」)'在這種情況下會返回「template」 – 2012-02-29 21:34:31

2

現代瀏覽器一般是「支持」,在分析它們和構建DOM節點,使元素可以樣式和腳本處理的意義自定義標記。

主要問題是IE 9之前的IE,但可以使用document.createElement('...')對每個自定義標籤名稱處理一次。

另一個問題是驗證器會將標籤報告爲錯誤,並且如果存在此類錯誤的負載,您可能不會注意到標記中存在一些實際錯誤。原則上你可以創建自己的DTD來處理這個問題(我有一個HTML DTD生成器正在建設中,但它比我預期的更復雜......)。

有了這些保留,使用自定義標籤,如果他們本質上簡化了您的工作,與使用類相比。