Comparing version 0.1.2 to 0.1.4
@@ -1,11 +0,39 @@ | ||
var ie = !window.addEventListener; | ||
var ie = !document.addEventListener; | ||
var addEventMethod = ie ? 'attachEvent': 'addEventListener'; | ||
var removeEventMethod = ie ? 'detachEvent': 'removeEventListener'; | ||
var currentFocusListener; | ||
module.exports = { | ||
listen: function (target, eventType, callback) { | ||
/** | ||
* Firefox doesn't have a focusin event so using capture is easiest way to get bubbling | ||
* IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8 | ||
* | ||
* We only allow one Listener at a time to avoid stack overflows | ||
*/ | ||
if(eventType == 'focus') { | ||
var remove; | ||
if(currentFocusListener) currentFocusListener.remove(); | ||
if (ie) { | ||
document.attachEvent('onfocusin', handler); | ||
remove = function() { document.detachEvent('onfocusin', handler); }; | ||
} | ||
else { // chrome/ff, use event capture to simulate this event | ||
document.addEventListener('focus', handler, true); | ||
remove = function() { document.removeEventListener('focus', handler, true); }; | ||
} | ||
currentFocusListener = { remove: remove }; | ||
return currentFocusListener; | ||
} | ||
// common way | ||
eventType = ie ? 'on' + eventType : eventType; | ||
target[addEventMethod](eventType, callback, false); | ||
return { | ||
remove() { | ||
remove: function() { | ||
target[removeEventMethod](eventType, callback, false); | ||
@@ -12,0 +40,0 @@ } |
{ | ||
"name": "lgutil", | ||
"version": "0.1.2", | ||
"version": "0.1.4", | ||
"description": "util function", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
13330
661