46 lines
1.3 KiB
HTML
46 lines
1.3 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
<script>
|
|
description('Tests that setting .length on an HTMLSelectElement works in the presence of mutation event listeners that reparent options');
|
|
|
|
var sel = document.createElement('select');
|
|
document.body.appendChild(sel);
|
|
var otherSel = document.createElement('select');
|
|
document.body.appendChild(otherSel);
|
|
|
|
function onRemove(e) {
|
|
if (e.target.nextSibling != null) {
|
|
// remove listener temporarily to avoid lots of nesting
|
|
sel.removeEventListener('DOMNodeRemoved', onRemove, false);
|
|
var n = e.target.nextSibling;
|
|
n.parentNode.removeChild(n);
|
|
otherSel.appendChild(n);
|
|
sel.addEventListener('DOMNodeRemoved', onRemove, false);
|
|
}
|
|
}
|
|
|
|
sel.addEventListener('DOMNodeRemoved', onRemove, false);
|
|
sel.addEventListener('DOMNodeInserted', function() {}, false);
|
|
|
|
sel.length = 200;
|
|
shouldBe('sel.length', '200');
|
|
shouldBe('otherSel.length', '0');
|
|
|
|
sel.length = 100;
|
|
shouldBe('sel.length', '100');
|
|
shouldBe('otherSel.length', '0');
|
|
|
|
sel.length = 180;
|
|
shouldBe('sel.length', '180');
|
|
shouldBe('otherSel.length', '0');
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|