1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
<!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="https://html.spec.whatwg.org/multipage/#the-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],
];
// Template element as a descendant of the HEAD and BODY elements
generate_tests(templateIsAChild, parameters);
parameters = [['Template element as a descendant of the FRAMESET element. ' +
'Template element is created by innerHTML',
frameset],
];
// Template element should be disallowed as a descendant of the FRAMESET elements
generate_tests(templateIsDisallowedAsAChild, parameters);
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],
];
// Template element as an indirect descendant of the HEAD, BODY and FRAMESET elements
generate_tests(templateIsAnIndirectChild, parameters);
parameters = [['Template element as an indirect descendant of the FRAMESET element. ' +
'Template element is created by innerHTML',
frameset],
];
// Template element should be disallowed as an indirect descendant of the FRAMESET elements
generate_tests(templateIsDisallowedAsAnIndirectChild, parameters);
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]
];
// Template element as a descendant of the HEAD, BODY and FRAMESET elements
generate_tests(templateIsAnAppendedChild, parameters);
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]
];
// Template element as a descendant of the HEAD, BODY and FRAMESET elements
generate_tests(templateIsAnAppendedIndirectChild, parameters);
</script>
</body>
</html>
|