<script>
function arraysEqual(a, b) {
if (a === b) return true;
if (a == null || b == null) return false;
if (a.length !== b.length) return false;
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) return false;
}
return true;
}
function doneIfSlotChange(slots, expectedAssignedNodes, test) {
let matched = Array(slots.length).fill(false);
for (let i=0; i<slots.length; i++) {
slots[i].addEventListener('slotchange', test.step_func((e) => {
matched[i] = arraysEqual(slots[i].assignedNodes(), expectedAssignedNodes[i]);
if (matched.every(v => v)) {
test.done();
}
}))
}
}
async_test((test) => {
let n = createTestTree(test1);
removeWhiteSpaceOnlyTextNodes(n.test1);
let d1 = document.createElement('div');
d1.setAttribute('slot', 'slot1');
doneIfSlotChange([n.s1], [[n.c1, d1]], test);
n.host1.appendChild(d1);
}, 'slotchange event: Append a child to a host.');
async_test((test) => {
let n = createTestTree(test1);
removeWhiteSpaceOnlyTextNodes(n.test1);
doneIfSlotChange([n.s1], [[]], test);
n.c1.remove();
}, 'slotchange event: Remove a child from a host.');
async_test((test) => {
let n = createTestTree(test1);
removeWhiteSpaceOnlyTextNodes(n.test1);
n.c1.remove();
doneIfSlotChange([n.s1], [[]], test);
}, 'slotchange event: Remove a child before adding an event listener.');
async_test((test) => {
let n = createTestTree(test1);
removeWhiteSpaceOnlyTextNodes(n.test1);
doneIfSlotChange([n.s1], [[]], test);
n.c1.setAttribute('slot', 'slot-none');
}, 'slotchange event: Change slot= attribute to make it un-assigned.');
async_test((test) => {
let n = createTestTree(test1);
removeWhiteSpaceOnlyTextNodes(n.test1);
doneIfSlotChange([n.s1], [[]], test);
n.s1.setAttribute('name', 'slot-none');
}, 'slotchange event: Change slot\'s name= attribute so that none is assigned.');
</script>
<script>
async_test((test) => {
let n = createTestTree(test3);
removeWhiteSpaceOnlyTextNodes(n.test3);
doneIfSlotChange([n.s1], [[]], test);
let slot = document.createElement('slot');
slot.setAttribute('name', 'slot1');
n.shadowroot.insertBefore(slot, n.s1);
}, "slotchange event: Insert a slot before an existing slot.");
</script>
<script>
async_test((test) => {
let n = createTestTree(test7);
removeWhiteSpaceOnlyTextNodes(n.test7);
let d1 = document.createElement('div');
d1.setAttribute('slot', 'slot1');
doneIfSlotChange([n.s1, n.s2], [[d1],[n.s1]], test);
n.host1.appendChild(d1);
}, "slotchange event: Child content is added to nested slots.");
</script>
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.4Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.