एचटीएमएल 5 ने <template>
इस उद्देश्य के लिए उपयोग किया जाने वाला तत्व प्रस्तुत किया (जैसा कि अब व्हाट्सएप कल्पना और एमडीएन डॉक्स में वर्णित है )।
<template>
एचटीएमएल के टुकड़े घोषित करने के लिए एक तत्व का उपयोग किया जाता है जो स्क्रिप्ट में उपयोग किया जा सकता है। तत्व को DOM के रूप में दर्शाया गया हैHTMLTemplateElement
जिसके पास टेम्पलेट की सामग्री तक पहुंच प्रदान करने के लिए, प्रकार की .content
संपत्ति है DocumentFragment
। इसका मतलब यह है कि आप innerHTML
एक <template>
तत्व की स्थापना करके एक HTML स्ट्रिंग को DOM तत्वों में परिवर्तित कर सकते हैं , फिर template
's' में पहुंच सकते हैं.content
संपत्ति हैं।
उदाहरण:
/**
* @param {String} HTML representing a single element
* @return {Element}
*/
function htmlToElement(html) {
var template = document.createElement('template');
html = html.trim(); // Never return a text node of whitespace as the result
template.innerHTML = html;
return template.content.firstChild;
}
var td = htmlToElement('<td>foo</td>'),
div = htmlToElement('<div><span>nested</span> <span>stuff</span></div>');
/**
* @param {String} HTML representing any number of sibling elements
* @return {NodeList}
*/
function htmlToElements(html) {
var template = document.createElement('template');
template.innerHTML = html;
return template.content.childNodes;
}
var rows = htmlToElements('<tr><td>foo</td></tr><tr><td>bar</td></tr>');
ध्यान दें कि समान दृष्टिकोण जो एक अलग कंटेनर तत्व का उपयोग करते हैं जैसे किdiv
काफी काम नहीं करते हैं। HTML में इस बात पर प्रतिबंध है कि किस तत्व प्रकार को अन्य तत्व प्रकारों के अंदर मौजूद होने की अनुमति है; उदाहरण के लिए, आप td
एक के प्रत्यक्ष बच्चे के रूप में नहीं डाल सकते हैं div
। यह इन तत्वों को गायब करने का कारण बनता है यदि आप उन्हें शामिल करने के लिए सेट करने innerHTML
का प्रयास करते div
हैं। जबसे<template>
उनकी सामग्री पर ऐसा कोई प्रतिबंध नहीं है, इसलिए टेम्पलेट का उपयोग करते समय यह कमी लागू नहीं होती है।
तथापि, template
कुछ पुराने ब्राउज़रों में समर्थित नहीं है। जनवरी 2018 तक, क्या मैं उपयोग कर सकता हूं ... अनुमान है कि दुनिया भर में 90% उपयोगकर्ता एक ब्राउज़र का उपयोग कर रहे हैं जो template
एस का समर्थन करता है । विशेष रूप से, इंटरनेट एक्सप्लोरर का कोई भी संस्करण उनका समर्थन नहीं करता है; Microsoft ने template
एज की रिलीज़ तक समर्थन को लागू नहीं किया ।
यदि आप पर्याप्त भाग्यशाली हैं कि वह कोड लिख रहा है जो केवल आधुनिक ब्राउज़रों के उपयोगकर्ताओं पर लक्षित है, तो आगे बढ़ें और अभी उनका उपयोग करें। अन्यथा, उपयोगकर्ताओं को पकड़ने के लिए आपको कुछ समय इंतजार करना पड़ सकता है।