140 lines
3.6 KiB
HTML
140 lines
3.6 KiB
HTML
<p>This test tabs between lots of elements, printing out the events you see along the way.</p>
|
|
<hr>
|
|
<div id="testDiv"></div>
|
|
<iframe id="testIframe" style="width: 800; height: 125; margin-top: 10px; border: 2px solid black"></iframe>
|
|
<pre id="console"></pre>
|
|
|
|
<script>
|
|
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
function log(s)
|
|
{
|
|
document.getElementById('console').appendChild(document.createTextNode(s));
|
|
}
|
|
|
|
function description(element)
|
|
{
|
|
var inputType = element.getAttribute('type');
|
|
if (inputType)
|
|
return inputType;
|
|
|
|
if (element.toString().match(/iframe/i))
|
|
return "IFRAME";
|
|
|
|
if (element.toString().match(/javascript:/i))
|
|
return "ANCHOR";
|
|
|
|
if (element.toString().match(/textarea/i))
|
|
return "TEXTAREA";
|
|
|
|
if (element.toString().match(/div/i))
|
|
return "DIV";
|
|
|
|
return element.toString();
|
|
}
|
|
|
|
function keydownListener(event)
|
|
{
|
|
log("keydown event: [to] " + description(event.target) + "\n");
|
|
}
|
|
|
|
function blurListener(event)
|
|
{
|
|
log("blur event: [to] " + description(event.target) + "\n");
|
|
}
|
|
|
|
var lastFocusedElement = null;
|
|
function focusListener(event)
|
|
{
|
|
log('focus event: [to] ' + description(event.target) + '\n');
|
|
lastFocusedElement = event.target;
|
|
}
|
|
|
|
function addEventListeners(element)
|
|
{
|
|
element.addEventListener('keydown', keydownListener, false);
|
|
element.addEventListener('focus', focusListener, false);
|
|
element.addEventListener('blur', blurListener, false);
|
|
}
|
|
|
|
function addElements(parentElement)
|
|
{
|
|
var inputTypes = [
|
|
"BUTTON",
|
|
"CHECKBOX",
|
|
"FILE",
|
|
"HIDDEN",
|
|
"IMAGE",
|
|
"ISINDEX",
|
|
"PASSWORD",
|
|
"RADIO",
|
|
"RANGE",
|
|
"RESET",
|
|
"SEARCH",
|
|
"SUBMIT",
|
|
"TEXT"
|
|
];
|
|
|
|
// Form elements
|
|
for (var i = 0; i < inputTypes.length; ++i) { //>
|
|
var input = parentElement.ownerDocument.createElement('input');
|
|
input.type = inputTypes[i];
|
|
addEventListeners(input);
|
|
parentElement.appendChild(input);
|
|
}
|
|
|
|
// Textarea
|
|
var textarea = parentElement.ownerDocument.createElement('textarea');
|
|
addEventListeners(textarea);
|
|
parentElement.appendChild(textarea);
|
|
|
|
// Contenteditable
|
|
var div = parentElement.ownerDocument.createElement('div');
|
|
div.contentEditable = true;
|
|
div.style.border = "1px solid black";
|
|
addEventListeners(div);
|
|
parentElement.appendChild(div);
|
|
|
|
// Anchor
|
|
var anchor = parentElement.ownerDocument.createElement('a');
|
|
anchor.innerHTML = "anchor";
|
|
anchor.href = "javascript:";
|
|
addEventListeners(anchor);
|
|
parentElement.appendChild(anchor);
|
|
}
|
|
|
|
function dispatchOptionTab(element, shiftKey)
|
|
{
|
|
var event = document.createEvent("KeyboardEvents");
|
|
var tabKeyIdentifier = "U+0009";
|
|
event.initKeyboardEvent("keydown", true, true, document.defaultView, tabKeyIdentifier, 0, false, true, shiftKey, false, false);
|
|
element.dispatchEvent(event);
|
|
}
|
|
|
|
function setup()
|
|
{
|
|
var testDiv = document.getElementById('testDiv');
|
|
addElements(testDiv);
|
|
|
|
var testIframe = document.getElementById('testIframe');
|
|
addElements(testIframe.contentDocument.body);
|
|
addEventListeners(testIframe);
|
|
}
|
|
|
|
setup();
|
|
|
|
log('PARENT DOCUMENT:\n');
|
|
document.getElementsByTagName('input')[0].focus();
|
|
for (var i = 0; i < 14; ++i) //>
|
|
dispatchOptionTab(lastFocusedElement, false);
|
|
|
|
lastFocusedElement.blur();
|
|
|
|
log('\nIFRAME DOCUMENT:\n');
|
|
document.getElementById('testIframe').contentDocument.getElementsByTagName('input')[0].focus();
|
|
for (var i = 0; i < 14; ++i) //>
|
|
dispatchOptionTab(lastFocusedElement, false);
|
|
</script>
|