<!DOCTYPE html> <html> <head> <title>HTML Templates: Template element as a descendant of the body element.</title> <meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru"> <meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru"> <meta name="assert" content="Template element can be a descendant of the body element"> <link rel="help" href="http://www.w3.org/TR/2013/WD-html-templates-20130214/#template-element"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src='/html/resources/common.js'></script> </head> <body> <div id="log"></div> <script type="text/javascript"> function templateIsAChild(element) { element.innerHTML = '<template>some text</template>'; assert_not_equals(element.querySelector('template'), null, 'Template element should be a descendant of the ' + element.tagName + ' element'); } function templateIsDisallowedAsAChild(element) { element.innerHTML = '<template>some text</template>'; assert_equals(element.querySelector('template'), null, 'Template element should not be allowed as a descendant of the ' + element.tagName + ' element'); } function templateIsAnIndirectChild(element) { element.innerHTML = '<div><template>some text</template></div>'; assert_not_equals(element.querySelector('template'), null, 'Template element should be a descendant of the ' + element.tagName + ' element'); } function templateIsDisallowedAsAnIndirectChild(element) { element.innerHTML = '<div><template>some text</template></div>'; assert_equals(element.querySelector('template'), null, 'Template element should not be allowed as indirect descendant of the ' + element.tagName + ' element'); } function templateIsAnAppendedChild(doc, element) { var template = doc.createElement('template'); element.appendChild(template); assert_not_equals(element.querySelector('template'), null, 'Template element should be a descendant of the ' + element.tagName + ' element'); } function templateIsAnAppendedIndirectChild(doc, element) { var template = doc.createElement('template'); var div = doc.createElement('div'); div.appendChild(template); element.appendChild(div); assert_not_equals(element.querySelector('template'), null, 'Template element should be a descendant of the ' + element.tagName + ' element'); } var doc = newHTMLDocument(); var frameset = doc.createElement('frameset'); var parameters = [['Template element as a descendant of the BODY element. ' + 'Template element is created by innerHTML', doc.body], ['Template element as a descendant of the HEAD element. ' + 'Template element is created by innerHTML', doc.head], ]; generate_tests(templateIsAChild, parameters, 'Template element as a descendant of the HEAD and BODY elements'); parameters = [['Template element as a descendant of the FRAMESET element. ' + 'Template element is created by innerHTML', frameset], ]; generate_tests(templateIsDisallowedAsAChild, parameters, 'Template element should be disallowed as a descendant of the FRAMESET elements'); parameters = [['Template element as an indirect descendant of the BODY element. ' + 'Template element is created by innerHTML', doc.body], ['Template element as an indirect descendant of the HEAD element. ' + 'Template element is created by innerHTML', doc.head], ]; generate_tests(templateIsAnIndirectChild, parameters, 'Template element as an indirect descendant of the HEAD, BODY and FRAMESET elements'); parameters = [['Template element as a descendant of the FRAMESET element. ' + 'Template element is created by innerHTML', frameset], ]; generate_tests(templateIsDisallowedAsAnIndirectChild, parameters, 'Template element should be disallowed as an indirect descendant of the FRAMESET elements'); parameters = [['Template element as a descendant of the BODY element. ' + 'Template element is appended by appendChild()', doc, doc.body], ['Template element as a descendant of the HEAD element. ' + 'Template element is appended by appendChild()', doc, doc.head], ['Template element as a descendant of the FRAMESET element. ' + 'Template element is appended by appendChild()', doc, frameset] ]; generate_tests(templateIsAnAppendedChild, parameters, 'Template element as a descendant of the HEAD, BODY and FRAMESET elements'); parameters = [['Template element as an indirect descendant of the BODY element. ' + 'Template element is appended by appendChild()', doc, doc.body], ['Template element as an indirect descendant of the HEAD element. ' + 'Template element is appended by appendChild()', doc, doc.head], ['Template element as an indirect descendant of the FRAMESET element. ' + 'Template element is appended by appendChild()', doc, frameset] ]; generate_tests(templateIsAnAppendedIndirectChild, parameters, 'Template element as a descendant of the HEAD, BODY and FRAMESET elements'); </script> </body> </html>