node.html revision 5ef353cde2c613a8ae88cc25d8796097b540d2db
448N/A <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>
448N/A <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>
569N/A <div id="test-prop" tabindex="4">text<em id="test-contains">test<span></span></em><strong>node</strong></div>
564N/A var tool = YAHOO.tool,
564N/A var Assert = YAHOO.util.Assert;
564N/A var ArrayAssert = YAHOO.util.ArrayAssert;
526N/A return document.getElementById(id);
526N/A var $ = Y.Selector.query;
448N/A Assert.areEqual(byId('test-nodes').id, Y.get('#test-nodes').get('id'), 'Y.get("#test-nodes")');
448N/A Assert.areEqual(byId('test-nodes'), Y.Node.getDOMNode(Y.get('#test-nodes')), 'Y.get("#test-nodes")');
448N/A Assert.areEqual(byId('test-nodes'), Y.Node.getDOMNode(Y.get('#test-nodes')), 'Y.get("#test-nodes")');
448N/A Assert.areEqual('test-nodes', Y.get('#test-nodes').get('id'), 'Y.get("#test-nodes").get("id")');
448N/A Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[0],
448N/A Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[1],
448N/A Y.Node.getDOMNode(Y.get('#test-nodes li:nth-child(2)')), 'Y.get("#test-nodes:nth-child(2)")');
448N/A Assert.areEqual(byId('test-nodes').getElementsByTagName('li')[1],
448N/A Y.Node.getDOMNode(Y.get('#test-nodes li:nth-child(2)')), 'Y.get("#test-nodes:nth-child(2)")');
448N/A Assert.areEqual(document.getElementById('form.foo@bar:baz'), Y.Node.getDOMNode(Y.get('[id="form.foo@bar:baz"]')), "[id=form.foo@bar:baz]");
926N/A Assert.isFalse(firstChild._node === Y.get('body :first-child')._node, "wrong node: Y.get('body :first-child')");
941N/A Assert.areEqual(Y.Selector.query('body :first-child', null, true), Y.get('body :first-child')._node, "body :first-child === #test-append");
941N/A ArrayAssert.itemsAreEqual($('#test-select option'), Y.NodeList.getDOMNodes(Y.all('#test-select option')), 'Y.get("#test-select option")');
941N/A Assert.areEqual(3, Y.all('#test-select option').size(), 'Y.get("#test-select option").size()');
983N/A Assert.areEqual(nodes.size(), Y.all('#test-nodes *').size(), 'nodes.size() === Y.all("#test-nodes").size()');
941N/A ArrayAssert.itemsAreEqual(Y.Selector.query('div'), Y.all(Y.Selector.query('div'))._nodes, "Y.all(Y.Selector.query('div'))");
941N/A // Firefox fails due to Firebug pollutes document.queryAll but not document.getElementsByTagName
941N/A //ArrayAssert.itemsAreEqual(document.getElementsByTagName('div'), Y.all(Y.Selector.query('div'))._nodes, "Y.all(Y.Selector.query('div'))");
941N/A ArrayAssert.itemsAreEqual(Y.Selector.query('input[name]'), Y.all(Y.Selector.query('input[name]'))._nodes, "Y.all(Y.Selector.query('input[name]'))");
941N/A ArrayAssert.itemsAreEqual(Y.Selector.query('.foo'), Y.all(Y.Selector.query('.foo'))._nodes, "Y.all(Y.Selector.query('.foo'))");
583N/A "frameDoc.query('#demo li').get('innerHTML')");
581N/A ArrayAssert.itemsAreEqual([document.body], Y.all(document.body)._nodes, "Y.all(document.body)");
565N/A nodes.each(function(node, i, list) {
565N/A Assert.areEqual(nodes, list, 'nodes === instance');
655N/A Assert.areEqual(node, this, 'this === node');
797N/A }), 'nodes.some(function() { return true; })');
581N/A }), 'nodes.some(function() {})');
581N/A Assert.areEqual(element.firstChild.nextSibling.nodeName, node.get('firstChild').get('nextSibling').get('nodeName'), 'node.firstChild.nextSibling.nodeName"');
581N/A Assert.areEqual(element.lastChild.nodeName, node.get('lastChild').get('nodeName'), 'lastChild.nodeName"');
581N/A Assert.areEqual(9, node.get('ownerDocument').get('nodeType'), 'node.ownerDocument.nodeType === 9');
581N/A Assert.areEqual('test-nodes', nodes.get('parentNode').get('id')[0], 'nodes.get(parentNode)[0].get("id") === test-nodes');
581N/A Assert.areEqual(element.firstChild.nodeType, node.get('firstChild').get('nodeType'), 'firstChild.get("nodeType")');
581N/A Assert.areEqual(element.offsetWidth, node.get('offsetWidth'), 'offsetWidth === node.offsetWidth');
581N/A Assert.areEqual(element.offsetParent.tagName, node.get('offsetParent').get('tagName'), 'offsetParent.tagName === offsetParent.tagName');
581N/A Assert.areEqual('item 1', Y.Lang.trim(nodes.get('children')[0].get('text')[0]), 'nodes.get("children")[0].get("text")[0]');
581N/A Assert.areEqual('item 1', Y.Lang.trim(nodes.get('children')[0].get('text')[0]), 'nodes.get("children")[0].get("text")[0]');
581N/A textContainer.set('text', 'bar');
581N/A ArrayAssert.itemsAreEqual($('#test-select option'),
988N/A Assert.areEqual(0, Y.one('#test-empty-children').get('children').size(), "Y.one('#test-empty-children').get('children')");
988N/A Assert.areEqual(byId('test-nodes').childNodes.length, node.get('childNodes').size(), 'node.get("childNodes").size()');
988N/A Assert.areEqual(byId('test-nodes').childNodes.length, node.get('childNodes').get('tagName').length, 'node.get("childNodes")');
988N/A ArrayAssert.itemsAreEqual(byId('test-nodes').childNodes.length, node.get('childNodes').get('length').length, "node.get('childNodes').get('length')");
988N/A Assert.areEqual(element.lastChild.nodeName, node.get('lastChild.nodeName'), 'node.get("lastChild.nodeName")');
581N/A Assert.areEqual(element.lastChild.previousSibling.nodeName, node.get('lastChild').get('previousSibling').get('nodeName'), 'node.lastChild.previousSibling.nodeName');
784N/A Assert.areEqual('test', Y.get('#test-prop').get('firstChild.nextSibling.firstChild.nodeValue'),
581N/A Assert.areEqual(byId('test-prop').tabIndex, Y.get('#test-prop').get('tabIndex'), 'Y.get("#test-prop").get("tabIndex")');
732N/A Assert.areEqual(byId('doc').tabIndex, Y.get('#doc').get('tabIndex'), 'Y.get("#doc".get("tabIndex"))');
581N/A Assert.areEqual(byId('link-1').tabIndex, Y.get('#link-1').get('tabIndex'), 'Y.get("#link1".get("tabIndex"))');
581N/A Assert.areEqual(byId('link-2').tabIndex, Y.get('#link-2').get('tabIndex'), 'Y.get("#link1".get("tabIndex"))');
934N/A Assert.areEqual(undefined, Y.get('form').get('childNodes')._nodes.item, 'convert live list to static');
934N/A Assert.isTrue(Y.all('input').get('parentNode') instanceof Y.NodeList, "Y.all('input').get('parentNode')");
581N/A Assert.areEqual('fresh', node.create('<div id="fresh">fresh</div>').get('id'), 'node.create from string)');
581N/A node.appendChild(option);
581N/A Assert.isTrue(Y.Node.getDOMNode(option).selected, "Y.Node.create('<option>test</option>').set('selected', 'selected'))");
581N/A node = Y.Node.create(html);
581N/A node = Y.Node.create(html);
581N/A node = Y.Node.create(html);
858N/A Assert.areEqual('3', node.get('firstChild').get('nodeType'), "node.get('firstChild').get('nodeType')");
858N/A Assert.areEqual('3', Y.Node.getDOMNode(node.get('firstChild')).nodeType, "Y.Node.getDOMNode(node.get('firstChild')).nodeType");
526N/A childNodes.set('title', 'foo bar');
448N/A Assert.isTrue(byId('test-nodes').title == 'foo bar', 'Y.get("body").get("childNodes").set("title")');
581N/A node.setAttrs(attrMap);
926N/A var getAttrs = node.getAttrs(['className', 'title']);
926N/A Assert.areEqual(attrMap.className, getAttrs.className, 'node.setAttrs(attrMap) (get className)');
581N/A Assert.areEqual(2, byId('test-select').selectedIndex,
581N/A var node = Y.Node.get('#test-prop');
581N/A Assert.areEqual(element.getElementsByTagName('em')[0].nodeName, node.getElementsByTagName('em').item(0).get('nodeName'), 'getElementsByTagName');
581N/A var insertNode = document.createElement('div');
581N/A insertNode.innerHTML = 'inserted node';
581N/A Assert.isTrue(Y.get('body').get('lastChild').compareTo(Y.get('#test-append')), 'get("body").appendChild(Y.get("#test-append"))');
581N/A Assert.areEqual(byId('test-append'), Y.Node.getDOMNode(Y.get('body').get('lastChild')), 'get("body").appendChild(Y.get([0]"#test-append"))');
581N/A Assert.areEqual('inserted node', node.appendChild(insertNode).get('innerHTML'), 'appendChild(element input)');
581N/A Assert.areEqual('inserted node', node.removeChild(insertNode).get('innerHTML'), 'removeChild(element input)');
873N/A Assert.areEqual('inserted node', node.appendChild(Y.get(insertNode)).get('innerHTML'), 'appendChild(Node input)');
873N/A Assert.areEqual('inserted node', node.removeChild(Y.get(insertNode)).get('innerHTML'), 'removeChild(Node input)');
873N/A var clone = node.cloneNode();
581N/A Assert.isTrue(node.get('childNodes').size() === node.cloneNode(true).get('childNodes').size(), 'node.get("childNodes").size() === node.cloneNode(true).get("childNodes").size()');
Assert.isFalse(node.contains(document.getElementsByTagName('div')), 'contains() false positive for collection');
return el.get('id') === 'doc';
return el.getAttribute('foo') !== '';
Assert.areEqual(byId('test-contains'), Y.Node.getDOMNode(node.getById('test-contains')), 'node.getById("test-contains")');
node.removeAttribute('tabIndex');
Assert.areEqual('0', Y.get('select[name=test-select] option:nth-child(1)').getAttribute('value'), 'option1.getAttribute("value") (from innerText)');
Assert.areEqual('1', Y.get('select[name=test-select] option:nth-child(2)').getAttribute('value'), 'option2.getAttribute("value") (from innerText)');
Assert.areEqual('', Y.get('select[name=test-select] option:nth-child(3)').getAttribute('value'), 'option3.getAttribute("value") (from innerText)');
Assert.areEqual('http://www.yahoo.com/foo', Y.get('#link-1').getAttribute('href'), "Y.get('#link1').getAttribute('href')");
Assert.areEqual('foo.html', Y.get('#link-2').getAttribute('href'), "Y.get('#link1').getAttribute('href')");
var frag = Y.get('document').invoke('createDocumentFragment'),
frag.appendChild(element);
Y.get('body').appendChild(frag);
var node = Y.Node.get(element);
Assert.areEqual(document.documentElement.scrollLeft, newNode.get('docScrollX'), 'newNode.get("docScrollX")');
Assert.areEqual(document.documentElement.scrollTop, node.get('docScrollY'), 'node.get("docScrollY")');
node.setXY([100, 100]);
var xy = node.getXY();
var x = Math.round(xy[0]);
var y = Math.round(xy[1]);
ArrayAssert.itemsAreEqual(Y.DOM.region(Y.DOM.byId('doc')), Y.Node.get('#doc').get('region'), 'node.get("region")');
var node = Y.Node.get(element);
Assert.isTrue(node.get('previousSibling').hasClass('test-class'), 'node.get("previousSibling").hasClass("test-class")');
node.addClass('foo');
node.removeClass('foo');
node.addClass('foo');
Y.Node.get('body').get('childNodes').addClass('foo');
node.replaceClass('foo', 'bar');
var nodes = Y.all('#test-nodes li');
nodes.addClass('foo').addClass('bar');
nodes.each(function(n) {
nodes.removeClass('bar');
nodes.each(function(n) {
var node = Y.one('#test-class');
node.toggleClass('foo');
node.toggleClass('foo');
node.toggleClass('foo', false);
node.toggleClass('foo');
node.toggleClass('foo', true);
node = Y.Node.get(element),
nodes = node.get('childNodes');
node.setStyle('width', '20em');
node.setStyle('marginTop', '1em');
node.setStyle('opacity', 0.5);
node.setStyle('float', 'left');
node.setStyle('float', 'left');
nodes.setStyle('marginTop', '1em');
var node = Y.Node.get('#get-style');
node.setStyle('opacity', 0.5);
node.setStyle('visibility', 'hidden');
node.setStyle('visibility', 'visible');
var node = Y.get('#test-computed');
domNode.style.zoom = 1;
domNode.style.border = 'medium solid #000';
var bw = (Y.UA.ie) ? 4 : 3;
var h = node.get('offsetHeight') - 20 - 2 * bw;
Assert.areEqual(h, Math.round(parseFloat(node.getComputedStyle('height'))), "height: auto (offset minus padding and border)");
domNode.style.padding = '1em';
domNode.parentNode.style.visibility = 'hidden';
domNode.parentNode.style.visibility = 'visible';
domNode.style.margin = 'auto';
var element = Y.Node.get(node);
node = Y.get('#' + id),
nodes = Y.all('#test-nodes *');
var win = Y.get(window);
//Assert.areEqual(window, Y.Node.getDOMNode(Y.get('document').get('defaultView')), 'win.get(document)');
Y.get('#test-scroll').set('scrollTop', 100);
Y.get('#test-scroll').set('scrollLeft', 200);
document.body.style.height = '5000px';
document.body.style.width = '5000px';
Y.get(window).set('scrollTop', 100);
Y.get(window).set('scrollLeft', 200);
Y.get(document).set('scrollTop', 200);
Y.get(document).set('scrollLeft', 100);
window.scrollTo(0, 0);
Y.get('#test-insert-html').setContent(content);
Assert.areEqual(content,
"Y.get('#test-insert-html').setContent(" + content + ")");
Assert.areEqual(content,
Assert.areEqual(content,
var element = document.createElement('strong');
element.innerHTML = 'bar';
Y.get('#test-insert-html').setContent(element);
Assert.areEqual(content,
"Y.get('#test-insert-html').setContent(element)");
Y.get('#test-insert-html').setContent(content);
Assert.areEqual(content,
"Y.get('#test-insert-html').setContent(" + content + ")");
Y.get('#test-insert-html').setContent(content);
Assert.areEqual('',
"Y.get('#test-insert-html').setContent(" + content + ")");
var node = Y.get('#test-insert-html'),
content = node.get('innerHTML');
node.insert(html);
"node.insert('" + html + "')");
content = node.get('innerHTML');
node.insert(html, 0);
"node.insert(" + html + ", 0)");
node.insert(html, 1);
"node.insert(" + html + ", 1)");
content = node.get('innerHTML');
node.insert(html);
"node.insert(" + html + ")");
content = node.get('innerHTML');
node.insert(html);
"node.insert(" + html + ")");
content = node.get('innerHTML');
node.insert(html);
"node.insert(" + html + ")");
content = node.get('innerHTML');
node.insert(html, 0);
"node.insert(" + html + ", 0)");
node.insert(html, 2);
html = document.createElement('div');
Y.get('#test-insert-html').insert(html, 2);
Assert.areEqual(Y.get('#test-insert-html')._node.childNodes[2], html, 'node.insert(someDOMNode, 2)');
var node = Y.get('#test-insert-html'),
content = node.get('innerHTML');
node.prepend(html);
"node.prepend('" + html + "')");
content = node.get('innerHTML');
node.append(html);
"node.append('" + html + "')");
Assert.areEqual('text value',
Y.get('input[name=test-text-value]').get('value'),
"Y.get('input[name=test-text-value]').get('value')");
Assert.areEqual('', // TODO: normalize to null?
Y.get('input[name=test-text-novalue]').get('value'),
"Y.get('input[name=test-text-novalue]').get('value')");
Assert.areEqual('textarea text',
Y.get('textarea[name=test-textarea-textvalue]').get('value'),
Assert.areEqual('',
Y.get('textarea[name=test-textarea-novalue]').get('value'),
Assert.areEqual('',
Y.get('textarea[name=test-textarea-value]').get('value'),
Assert.areEqual('button value',
Y.get('button[name=test-button-value]').get('value'),
Assert.areEqual('',
Y.get('button[name=test-button-novalue]').get('value'),
Assert.areEqual('',
Y.get('button[name=test-button-textvalue]').get('value'),
var node = Y.get('#test-remove'),
domNode = Y.DOM.byId('test-remove'),
parent = domNode.parentNode;
node.remove();
node.remove();
var node = Y.get('#test-replace').get('firstChild'),
newNode = document.createElement('div');
node.replace(newNode);
node = Y.get('#test-replace').get('firstChild');
node.replace(newNode);
var elements = Y.get('#test-form').get('elements');
ArrayAssert.itemsAreEqual(Y.DOM.byId('test-form').elements, elements._nodes, "Y.get('#test-form').get('elements')");
var frag = Y.all('#test-frag p').toFrag();
Y.get('body').set('role', 'menu');
Y.get('body').set('aria-checked', true);
Assert.areEqual('true', document.body.getAttribute('aria-checked', 2), "Y.get('body').set('aria-checked', true)")
Assert.areEqual('true', Y.get('body').getAttribute('aria-checked'), "Y.get('body').set('aria-checked', true)")
Y.get('body').set('aria-checked', false);
Assert.areEqual('false', Y.get('body').get('aria-checked'), "Y.get('body').set('aria-checked', false)");
Y.all('input').each(function(n) {
Y.all('input').each(function(n) {
var mask = document.createElement('div');
mask.className = 'mask';
document.body.appendChild(mask);
var doc = Y.Node.get('document');
Y.DOM.setStyle(mask, 'opacity', 0.4);
Assert.areEqual(document.documentElement.scrollLeft, doc.get('docScrollX'), 'doc.get("docScrollX")');
Assert.areEqual(document.documentElement.scrollTop, doc.get('docScrollY'), 'doc.get("docScrollY")');
mask.className = '';
var node = Y.one('#test-nodes'),
nodelist = node.all('li');
nodelist.item(1).remove();
nodelist = Y.all('#test-nodes li');
nodelist.item(1).remove();
var node = Y.DOM.byId('test:colon');
node = Y.DOM.byId('_funky:id{$400}');
var node = Y.DOM.byId('test:colon');
Y.one(node).all('h2')._nodes,
node = Y.DOM.byId('_funky:id{$400}');
Y.one(node).all('h2')._nodes,
name: 'Instance Y.NodeExtras',
var element = Y.Node.get('#test-extras');
tool.TestRunner.add(suite);
Y.on('load', function() {