1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
module("Mutation Events");
// test each of the following events
$.each([
"DOMSubtreeModified","DOMNodeInserted",
"DOMNodeRemoved","DOMNodeRemovedFromDocument",
"DOMNodeInsertedIntoDocument","DOMAttrModified",
"DOMCharacterDataModified"
],function( i, type ){
// test each event type
test( '"'+ type +'"', function(){
expect( 0 );
// custom event properties
var props = {
//keyCode: Math.round( Math.random() * 256 ),
//charCode: Math.round( Math.random() * 256 ),
ctrlKey: Math.round( Math.random() ) ? true : false,
altKey: Math.round( Math.random() ) ? true : false,
shiftKey: Math.round( Math.random() ) ? true : false
},
// new test element
$div = $('<div/>').appendTo( document.body );
// test the document too for bubbling
$div.add( document ).bind( type, function( ev ){
equals( ev.currentTarget, this, "event.currentTarget");
equals( ev.target, $div[0], "event.target" );
equals( ev.type, type, "event.type" );
equals( ev.ctrlKey, props.ctrlKey, "event.ctrlKey" );
equals( ev.altKey, props.altKey, "event.altKey" );
equals( ev.shiftKey, props.shiftKey, "event.shiftKey" );
equals( ev.metaKey, props.metaKey, "event.metaKey" );
equals( ev.bubbles, props.bubbles, "event.bubbles" );
});
// make sure that metaKey and ctrlKey are equal
props.metaKey = props.ctrlKey;
// fire the event with bubbling
props.bubbles = true;
$div.fire( type, props );
// fire the event without bubbling
props.bubbles = false;
$div.fire( type, props );
// cleanup
$( document ).unbind( type );
$div.remove();
});
});
|