87 lines
3.3 KiB
HTML
87 lines
3.3 KiB
HTML
<html>
|
|
<head>
|
|
<title></title>
|
|
<script type="text/javascript">
|
|
var changeCount = new Array(4);
|
|
changeCount[1] = changeCount[2] = changeCount[3] = 0;
|
|
|
|
function test()
|
|
{
|
|
if (!window.eventSender)
|
|
return;
|
|
|
|
testRunner.dumpAsText();
|
|
|
|
var popup = document.getElementById("switcher1");
|
|
popup.focus();
|
|
|
|
popup = document.getElementById("switcher2");
|
|
popup.focus();
|
|
|
|
eventSender.keyDown("t", null);
|
|
eventSender.keyDown("\r", null);
|
|
|
|
var popup = document.getElementById("switcher3");
|
|
popup.focus();
|
|
|
|
check();
|
|
}
|
|
|
|
function check() {
|
|
setTimeout("document.getElementById('switcher3').selectedIndex = 1;", 0);
|
|
|
|
var popup = document.getElementById("switcher2");
|
|
popup.focus();
|
|
|
|
var result = document.getElementById("result");
|
|
result.innerHTML = "";
|
|
if (changeCount[1] != 0) {
|
|
result.innerHTML += "<br/>FAILURE: onchange(1) called " + changeCount[1] + " times.";
|
|
}
|
|
if (changeCount[2] != 1) {
|
|
result.innerHTML += "<br/>FAILURE: onchange(2) called " + changeCount[2] + " times.";
|
|
}
|
|
if (changeCount[3] != 0) {
|
|
result.innerHTML += "<br/>FAILURE: onchange(3) called " + changeCount[3] + " times.";
|
|
}
|
|
if (result.innerHTML == "") result.innerHTML = "SUCCESS";
|
|
|
|
}
|
|
|
|
function changed(select)
|
|
{
|
|
changeCount[select]++;
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="test()">
|
|
<p>
|
|
Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=23721">http://bugs.webkit.org/show_bug.cgi?id=23721</a>
|
|
Changing dropdown's selectedIndex within onchange handler fires another onchange</i>.
|
|
</p>
|
|
<p id="result">
|
|
To test interactively: focus on the first select (don't change it).<br/>
|
|
Change the second select to "two"<br/>
|
|
Focus on the third, then click <a href="#" onclick="check(); return false;">here</a>.
|
|
</p>
|
|
This select changes on focus: should not fire onchange.
|
|
<select name="switcher1" id="switcher1" onfocus="this.selectedIndex = 1;" onchange="changed(1)">
|
|
<option value="one">One</option>
|
|
<option value="two">Two</option>
|
|
</select>
|
|
<hr/>
|
|
This select changes on change: should only fire onchange once.
|
|
<select name="switcher2" id="switcher2" onchange="changed(2); if (this.selectedIndex == 1) this.selectedIndex = 2;">
|
|
<option value="one">One</option>
|
|
<option value="two">Two</option>
|
|
<option value="three">Three</option>
|
|
</select>
|
|
<hr/>
|
|
This select is changed by a timeout in the test script. It should not fire onchange.
|
|
<select name="switcher3" id="switcher3" onchange="changed(3)">
|
|
<option value="one">One</option>
|
|
<option value="two">Two</option>
|
|
</select>
|
|
</body>
|
|
</html>
|