Skip to content

Instantly share code, notes, and snippets.

@chrisjlee
Created February 12, 2014 17:39
Show Gist options
  • Star 49 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save chrisjlee/8960575 to your computer and use it in GitHub Desktop.
Save chrisjlee/8960575 to your computer and use it in GitHub Desktop.
IE document.querySelector() polyfill
if (!document.querySelectorAll) {
document.querySelectorAll = function (selectors) {
var style = document.createElement('style'), elements = [], element;
document.documentElement.firstChild.appendChild(style);
document._qsa = [];
style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';
window.scrollBy(0, 0);
style.parentNode.removeChild(style);
while (document._qsa.length) {
element = document._qsa.shift();
element.style.removeAttribute('x-qsa');
elements.push(element);
}
document._qsa = null;
return elements;
};
}
if (!document.querySelector) {
document.querySelector = function (selectors) {
var elements = document.querySelectorAll(selectors);
return (elements.length) ? elements[0] : null;
};
}
@danwdart
Copy link

Would this be adaptable for use on any Node?

@julienetie
Copy link

I think you can add ".call(this));" to the end of the function and replace document with "this.document" and window with "this"

@AnandChowdhary
Copy link

What license is this polyfill available as? MIT?
Would like to use it as part of a commercial project. Thanks in advance!

@bantya
Copy link

bantya commented Apr 19, 2017

@Peppester
Copy link

Peppester commented Apr 23, 2017

What's that window.scrollby doing in there? Just curious because it doesn't seem to contribute anything...

@victornpb
Copy link

@Peppester I'm not sure, but it is probably something that makes the css engine refresh and recompute the rules or something like that I would guess...

@caoshouse
Copy link

What's that window.scrollby doing in there? Just curious because it doesn't seem to contribute anything...

And also scrollBy does not work in IE

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