Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doesn't work in IE 8.0.7601.17514 / Win 7 #36

Open
johngeorgewright opened this issue Feb 11, 2015 · 11 comments
Open

Doesn't work in IE 8.0.7601.17514 / Win 7 #36

johngeorgewright opened this issue Feb 11, 2015 · 11 comments

Comments

@johngeorgewright
Copy link

I've just tried your polyfill in the above version and it doesn't work. It fails here: https://github.com/eligrey/classList.js/blob/master/classList.js#L174

Turns out the exception thrown isn't what you were expecting. The exception has no number property. It is a TypeError stating that "getters & setters can not be defined on this javascript engine".

Removing the condition if (ex.number === -0x7FF5EC54) { ... fixes the problem.

@eligrey
Copy link
Owner

eligrey commented Feb 11, 2015

Hmm, odd. I will need to investigate further before removing the condition, but thanks for informing me. Years ago when I first made classList.js, that condition was working fine in IE8. Maybe a security patch changed something.

@johngeorgewright
Copy link
Author

Agreed, having a condition there is probably a good idea. There may be some other kind of duck typing you can check on the error.

@pkese
Copy link

pkese commented Mar 2, 2015

I can also confirm this issue. ex.number results to undefined in IE11's compatibility mode for IE8.
Removing the condition seems to solve it.

@MadLittleMods
Copy link

👍 Tested in IE8 with XP VM and this is still a problem. The solution proposed works great.

IE v8.0.6001.18702
Update Versions: 0

@nbouvrette
Copy link

How can you replicate the problem? I have the same IE8 version in a Windows XP VM and I don't have this issue.

@MadLittleMods
Copy link

Windows XP VM from Microsoft running in VirtualBox on a host Macbook.

I use it via require/import it in a browserify/webpack bundle with babel transpiling

@nbouvrette
Copy link

I'm running my Windows XP VM (32 bits) in a Virtual Box hosted on a Windows 7 VM (64 bits).

First time I hear about transpiling. I simply load classList.js in my <head> and it has been working well so far.

@david-mark
Copy link

What you had hold of initially was an ActiveX exception (the number is an HRESULT). Clearly IE 11 is no longer using ActiveX objects behind the scenes.

Might as well remove the check as it simply causes all other exceptions to fail silently. There's really no way to deal with the exception anyway. What's the point of having it enumerable in some browsers and not in others?

Realize this will never be a perfect imitation of classList. It's simply an impossible task; for one, the array-like object returned is not live. Then there's the unsolvable IE 8- issue at hand.

A "polyfill" that doesn't actually work as expected only serves to deceive other scripts. It fools their feature detection into thinking that the feature is there, but it's really just an incomplete imposter.

In general, DOM "polyfills" are highly ill-advised and this one is a good example of why. Better to write wrappers (e.g. hasClass, addClass, etc.)

Also note that transpiling is just a red herring here.

HTH

@eligrey
Copy link
Owner

eligrey commented Jan 12, 2017

I'm super busy with my proprietary stuff and missed this a year ago. I merged #43 just now.

I'm sorry about this issue affecting any of you. Please tell me if the changes I have merged have fixed this issue for you.

@Finesse
Copy link

Finesse commented Apr 20, 2017

@eligrey Could you please update the classList.js on the CloudFlare CDN and post the updated URL's in the readme.md?

@englishextra
Copy link

englishextra commented Apr 20, 2017

I use this commit beck@d94a623 but it seems ie11 wont support multiple args. So I have to write:

e.classList.add(a);
e.classList.add(b);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants