59 lines
2.0 KiB
HTML
59 lines
2.0 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('This tests that deselecting an option won't cause unnecessary scrolling.');
|
|
|
|
function mouseDownOnSelect(selId, index, modifier) {
|
|
var sl = document.getElementById(selId);
|
|
var itemHeight = Math.floor(sl.offsetHeight / sl.size);
|
|
var border = 1;
|
|
var y = border + index * itemHeight - window.pageYOffset;
|
|
if (window.eventSender) {
|
|
eventSender.mouseMoveTo(sl.offsetLeft + border, sl.offsetTop + y);
|
|
eventSender.mouseDown(0, [modifier]);
|
|
eventSender.mouseUp(0, [modifier]);
|
|
}
|
|
}
|
|
|
|
function selectionPattern(select) {
|
|
var result = '';
|
|
for (var i = 0; i < select.options.length; i++)
|
|
result += select.options[i].selected ? '1' : '0';
|
|
return result;
|
|
}
|
|
|
|
var parent = document.createElement('div');
|
|
parent.innerHTML = '<select id="sl" multiple="multiple" size="5">'
|
|
+ '<option value="Accessibility">Accessibility</option>'
|
|
+ '<option value="CSS">CSS</option>'
|
|
+ '<option value="Drosera">Drosera</option>'
|
|
+ '<option value="Evangelism">Evangelism</option>'
|
|
+ '<option value="Forms">Forms</option>'
|
|
+ '<option value="Frames">Frames</option>'
|
|
+ '<option value="History">History</option>'
|
|
+ '<option value="HTML DOM">HTML DOM</option>'
|
|
+ '<option value="HTML Editing">HTML Editing</option>'
|
|
+ '<option value="Images">Images</option>'
|
|
+ '<option>SCROLL UP</option>'
|
|
+ '</select>';
|
|
document.body.appendChild(parent);
|
|
|
|
var sl = document.getElementById('sl');
|
|
sl.focus();
|
|
document.execCommand("SelectAll");
|
|
sl.scrollTop = Math.floor(sl.offsetHeight / sl.size) * 4 + 6;
|
|
var scrollBeforeClick = sl.scrollTop;
|
|
mouseDownOnSelect("sl", 3, "addSelectionKey");
|
|
shouldBe('sl.scrollTop', 'scrollBeforeClick');
|
|
shouldBe('selectionPattern(sl)', '"11111110111"');
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|