Updated
This commit is contained in:
167
master/examples/eventKeyPressRobot.html
Normal file
167
master/examples/eventKeyPressRobot.html
Normal file
@@ -0,0 +1,167 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>doh.robot keypress event tests</title>
|
||||
|
||||
<style>
|
||||
@import "../../../util/doh/robot/robot.css";
|
||||
</style>
|
||||
|
||||
<!-- required: dojo.js -->
|
||||
<script type="text/javascript" src="../../../dojo/dojo.js"
|
||||
djConfig="isDebug: true"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
dojo.require("dojo.robotx");
|
||||
|
||||
var navigation = [
|
||||
"BACKSPACE",
|
||||
"TAB",
|
||||
"ENTER",
|
||||
"ESCAPE",
|
||||
"PAGE_UP",
|
||||
"PAGE_DOWN",
|
||||
"END",
|
||||
"HOME",
|
||||
"LEFT_ARROW",
|
||||
"UP_ARROW",
|
||||
"RIGHT_ARROW",
|
||||
"DOWN_ARROW"
|
||||
|
||||
/*
|
||||
F1 to F10 are just too problematic to test; they have special meanings
|
||||
on the browsers.
|
||||
|
||||
// "F1", // brings up help
|
||||
"F2",
|
||||
// "F3", // brings up search
|
||||
// "F4", // address bar access on IE,
|
||||
// "F5", // refreshes the page
|
||||
// "F6", // address bar access on IE
|
||||
// "F7", // affects "caret browsing" on FF
|
||||
"F8",
|
||||
"F9",
|
||||
// "F10", // access File menu on IE
|
||||
// "F11", // full screen mode
|
||||
// "F12" // opens firebug console
|
||||
*/
|
||||
];
|
||||
|
||||
// Test a few normal keystrokes, but be careful about testing things
|
||||
// that are entered using the SHIFT key as that produces two onkeypress
|
||||
// events on IE (one for the SHIFT key and one for the character)
|
||||
var printables = [" ", "n", "7"];
|
||||
|
||||
dojo.addOnLoad(function(){
|
||||
doh.robot.initRobot('eventKeyPress.html');
|
||||
|
||||
var typer, // <input> that will receive keyboard events
|
||||
events; // array of events on typer, populated by dojo.connect() in eventKeyPress.html
|
||||
|
||||
doh.register("setup", function(){
|
||||
typer = dojo.byId("typer");
|
||||
});
|
||||
|
||||
doh.register("navigation keys", dojo.map(navigation, function(code){
|
||||
return {
|
||||
name: code,
|
||||
timeout: 1000,
|
||||
runTest: function(){
|
||||
var d = new doh.Deferred();
|
||||
|
||||
events = dojo.global.events = [];
|
||||
typer.focus();
|
||||
|
||||
// Send the keystroke
|
||||
doh.robot.keyPress(dojo.keys[code], 50, {});
|
||||
|
||||
doh.robot.sequence(d.getTestCallback(function(){
|
||||
doh.is(1, events.length, "got (exactly) one onkeypress event");
|
||||
doh.is(dojo.keys[code], events[0].charOrCode, "correct keycode");
|
||||
}), 250);
|
||||
|
||||
return d;
|
||||
}
|
||||
};
|
||||
}));
|
||||
|
||||
doh.register("normal keys", dojo.map(printables, function(c){
|
||||
return {
|
||||
name: "'" + c + "'",
|
||||
timeout: 1000,
|
||||
runTest: function(){
|
||||
var d = new doh.Deferred();
|
||||
|
||||
events = dojo.global.events = [];
|
||||
typer.focus();
|
||||
|
||||
// Send the keystroke
|
||||
doh.robot.keyPress(c, 50, {});
|
||||
|
||||
doh.robot.sequence(d.getTestCallback(function(){
|
||||
doh.is(1, events.length, "got (exactly) one onkeypress event");
|
||||
doh.is(c, events[0].charOrCode, "correct char");
|
||||
}), 250);
|
||||
|
||||
return d;
|
||||
}
|
||||
};
|
||||
}));
|
||||
|
||||
/*
|
||||
TODO: test ctrl-key combinations if/when #9511 is fixed.
|
||||
106:42,
|
||||
111:47,
|
||||
186:59,
|
||||
187:43,
|
||||
188:44,
|
||||
189:45,
|
||||
190:46,
|
||||
191:47,
|
||||
192:96,
|
||||
219:91,
|
||||
220:92,
|
||||
221:93,
|
||||
222:39
|
||||
*/
|
||||
|
||||
// Ctrl-alphabetic tests.
|
||||
// Skip ctrl-o and ctrl-p which cause open and print dialogs on IE, even with the dojo.stopEvent()
|
||||
doh.register("ctrl-alphabetic", dojo.map("abcdefghijklmnqrstuvwxyz", function(c){
|
||||
return {
|
||||
name: "ctrl-" + c,
|
||||
timeout: 1000,
|
||||
runTest: function(){
|
||||
var d = new doh.Deferred();
|
||||
|
||||
typer.focus();
|
||||
|
||||
events = dojo.global.events = [];
|
||||
|
||||
// Send the keystroke
|
||||
doh.robot.keyPress(c, 50, {ctrl: true});
|
||||
|
||||
doh.robot.sequence(d.getTestCallback(function(){
|
||||
console.log("event is: ", events[0]);
|
||||
doh.is(1, events.length, "got (exactly) one onkeypress event");
|
||||
doh.is(c, events[0].charOrCode, "correct char");
|
||||
doh.t(events[0].ctrlKey, "control key was pressed");
|
||||
}), 250);
|
||||
|
||||
return d;
|
||||
}
|
||||
};
|
||||
}));
|
||||
|
||||
/* TODO: test preventDefault() of up/down arrows */
|
||||
|
||||
/* TODO: ctrl-break, ctrl-enter */
|
||||
|
||||
/* TODO: Test preventDefault() (in eventKeyPress.html) stopping down arrow on <button> from scrolling page. */
|
||||
|
||||
doh.run();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
Reference in New Issue
Block a user