dom.html revision f328401955235416edeee0c5ac3ae9fb6dee940a
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher <p id="clicker1" class="clickers"><a id='clicka'>click1</a></p>
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher <p id="clicker2" class="clickers">click2</p>
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher <!-- YUI3 Core //-->
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher <script type="text/javascript" src="/build/yui/yui-debug.js"></script>
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher <!-- Initialization process //-->
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min',
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher allowRollup: false,
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher lazyEventFacade: true,
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher yui:true, get: true, 'selector-native': true, loader: true,
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Dom: true, Selector: true, Node: true, attribute: true, base: true, widget: true}
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher }).use('console', 'test', 'node', 'event-simulate', function (Y) {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // creating the console...
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher (new Y.Console()).render();
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // starting the testing process
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // add the test cases and suites
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher name: "DOM Event Tests",
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher test_on_with_string: function() {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher var clicked = false,
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher node = Y.one('#clickcontainer'),
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher el = document.getElementById('clickcontainer');
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // el.attachEvent('click', function() {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // console.log("IE click");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // el.addEventListener('click', function() {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // console.log("DOM2 click");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // el.onclick = function() {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher // console.log('DOM0 click');
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.on('click', function(e, extra1, extra2) {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher clicked = true;
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher context = this;
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher }, '#clickcontainer', obj, 2, 3);
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.isTrue(clicked, "click handler via Y.on didn't work when passed a string.");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.areEqual(1, context.a, "context didn't work");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher test_on_with_node: function() {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher var clicked = false,
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher node = Y.one('#clickcontainer');
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.on('click', function(e, extra1, extra2) {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher clicked = true;
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher context = this;
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher }, node, obj, 2, 3);
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.isTrue(clicked, "click handler via Y.on didn't work when passed a node.");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.areEqual(1, context.a, "context didn't work");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher test_node_on: function() {
effcbdb12c7ef892f1fd92a745cb33a08ca4ba30Stephen Gallagher var clicked = false,
node = Y.one('#clickcontainer');
node.on('click', function(e, extra1, extra2) {
Y.Assert.isTrue(clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
node = Y.one('#clickcontainer');
node.on('click', function(e, extra1, extra2) {
node.on('mouseover', function(e, extra1, extra2) {
Y.Assert.isFalse(clicked, "click handler was not removed");
Y.Assert.isFalse(overed, "mouseover handler was not removed");
nodelist = Y.all('.clickers');
nodelist.on('click', function(e, extra1, extra2) {
Y.Assert.areEqual(1, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work"); // bug #2528155
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work"); // bug #2528155
Y.Assert.areEqual(2, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work"); // bug #2528155
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work"); // bug #2528155
nodelist = Y.all('.clickers');
Y.on('click', function(e, extra1, extra2) {
Y.Assert.areEqual(1, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.Assert.areEqual(2, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
nodelist = Y.all('.clickers'),
Y.on('click', fn, nodelist, obj, 2, 3);
Y.Assert.areEqual(1, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.detach('click', fn, nodelist);
Y.Assert.areEqual(1, clicked, "click handler wasn't removed");
Y.on('click', fn, arrayofselectors, obj, 2, 3);
Y.Assert.areEqual(1, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.detach('click', fn, arrayofselectors);
Y.Assert.areEqual(1, clicked, "click handler wasn't removed");
Y.on('click', function(e, extra1, extra2) {
Y.Assert.areEqual(1, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.Assert.areEqual(2, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.on('click', function(e, extra1, extra2) {
}, document.getElementsByTagName('p'), obj, 2, 3);
Y.Assert.areEqual(1, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.Assert.areEqual(2, clicked, "click handler didn't work");
Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
Y.on('click', function(e, extra1, extra2) {
els = document.getElementsByTagName('p');
Y.on('click', fn, '#clicker1', obj, 2, 3);
Y.detach('click', fn, '#clicker1', obj, 2, 3);
Y.Assert.areEqual(1, clicked, "detach by signature was a failure");
Y.on('click', fn, '#clicker1');
Y.detach('click', fn, '#clicker1');
Y.Assert.areEqual(1, clicked, "detach by signature was a failure");
var node = Y.one("#clicker1");
node.on('click', fn);
node.detach('click', fn);
Y.Assert.areEqual(1, clicked, "detach by signature was a failure");
// Y.on('windowresize', fn);
// Y.detach('windowresize', fn);
// Y.Event.simulate(window, 'resize');
// Y.Assert.areEqual(1, clicked, "detach by signature was a failure");
els = document.getElementsByTagName('p');
var handle = Y.on('click', fn, '.clickers', obj, 2, 3);
// Y.log(handle);
Y.Assert.areEqual(0, clicked, "single detach handle for multiple listeners doesn't work.");
handle = Y.on('available', function() {
div = document.createElement("div");
div.id = 'notthereyet';
this.wait(function() {
Y.Assert.areEqual(0, avail, "onavailable wasn't canceled.");
handle = Y.on('click', function() {
div = document.createElement("div");
div.id = 'notthereyet';
this.wait(function() {
Y.Assert.areEqual(0, avail, "lazy detacher didn't work.");
Y.on('click', function(e) {
Y.on('click', function(e) {
Y.on('click', function(e) {
Y.on('click', function(e) {
Y.Assert.areEqual(1, a);
Y.Assert.areEqual(1, b);
Y.Assert.areEqual(0, c);
Y.Assert.areEqual(1, d);
Y.Event.purgeElement('#clickcontainer', true, 'click');
Y.Assert.areEqual(1, a);
Y.Assert.areEqual(1, b);
Y.Assert.areEqual(0, c);
Y.Assert.areEqual(1, d);
var list = Y.all('.clickers');
list.on('category|click', function(e) {
// Y.all('.foo').detach('category|click');
list.detach('category|click');
Y.Assert.areEqual(2, count);
Y.Assert.areEqual(2, count);
var node = Y.one('#clicker1'),
typePrefix = 'event:' + Y.stamp(el),
// cribbed from the event-base-ie.js conditional loading
testIE = !(imp && imp.hasFeature
&& imp.hasFeature('Events', '2.0'));
// custom simulation because Y.Event.simulate attempts to
wrapper = Y.Env.evt.dom_wrappers[key];
config.type = type;
config.target = el;
handle = node.on(['mouseup', 'click'], function (e) {
fired[e.type] = true;
handle = node.on(['mouseup', 'click'], function (e) {
fired[e.type] = true;