closure-dom
Advanced tools
Comparing version 0.1.1 to 0.2.0
{ | ||
"name": "closure-dom", | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"description": "Closure Compiler compatible DOM methods.", | ||
@@ -5,0 +5,0 @@ "directories": { |
@@ -5,2 +5,8 @@ goog.provide('dom'); | ||
/** | ||
* @type {boolean} | ||
* @const | ||
*/ | ||
dom.SUPPORTS_ADDEVENTLISTENER = !!document.addEventListener; | ||
/** | ||
* @param {string} name | ||
@@ -97,2 +103,15 @@ * @return {Element} | ||
/** | ||
* @param {Element} element | ||
* @param {string} event | ||
* @param {function(Event)} callback | ||
*/ | ||
dom.addListener = function (element, event, callback) { | ||
if (dom.SUPPORTS_ADDEVENTLISTENER) { | ||
element.addEventListener(event, callback, false); | ||
} else { | ||
element.attachEvent(event, callback); | ||
} | ||
}; | ||
/** | ||
* @param {function()} callback | ||
@@ -104,5 +123,14 @@ */ | ||
} else { | ||
document.addEventListener('DOMContentLoaded', callback); | ||
if (dom.SUPPORTS_ADDEVENTLISTENER) { | ||
dom.addListener(document, 'DOMContentLoaded', callback); | ||
} else { | ||
// IE8 | ||
document.onreadystatechange = function () { | ||
if (document.readyState == 'interactive') { | ||
callback(); | ||
} | ||
}; | ||
} | ||
} | ||
}; | ||
}); |
@@ -66,2 +66,16 @@ describe('dom', function () { | ||
describe('addListener', function () { | ||
it('adds an event listener and receives an event', function (done) { | ||
var event = new Event('test'); | ||
var el = dom.createElement('div'); | ||
dom.addListener(el, 'test', function (e) { | ||
expect(e.type, 'to equal', 'test'); | ||
done(); | ||
}); | ||
el.dispatchEvent(event); | ||
}); | ||
}); | ||
describe('hasClass', function () { | ||
@@ -68,0 +82,0 @@ it('returns false if there are no classes', function () { |
57057
1551