Skip to content

Instantly share code, notes, and snippets.

@aFarkas
Last active August 20, 2020 10:49
Show Gist options
  • Star 30 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save aFarkas/a7e0d85450f323d5e164 to your computer and use it in GitHub Desktop.
Save aFarkas/a7e0d85450f323d5e164 to your computer and use it in GitHub Desktop.
simple focus-within polyfill
(function(window, document){
'use strict';
var slice = [].slice;
var removeClass = function(elem){
elem.classList.remove('focus-within');
};
var update = (function(){
var running, last;
var action = function(){
var element = document.activeElement;
running = false;
if(last !== element){
last = element;
slice.call(document.getElementsByClassName('focus-within')).forEach(removeClass);
while(element && element.classList){
element.classList.add('focus-within');
element = element.parentNode;
}
}
};
return function(){
if(!running){
requestAnimationFrame(action);
running = true;
}
};
})();
document.addEventListener('focus', update, true);
document.addEventListener('blur', update, true);
update();
})(window, document);
@hamsterbacke23
Copy link

would it be possible to make a repo with a license out of this?

@zizoclimbs
Copy link

I tried it and It works fine in all browsers. Thanks a lot :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment