-
Notifications
You must be signed in to change notification settings - Fork 2k
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
IE Browser Support via ExplorerCanvas integration #83
Comments
I vote that we do not support the ex canvas project. Build a flash game if you HAVE TO DO SOMETHING about ie. Or display an upgrade message. |
Have you read Apple's "Thoughts on Flash" (that tries to explain why they won't provide flash support on Apple mobile devices): Unfortunately Microsoft doesn't allow WinXp users to upgrade past IE8 to IE9 (which has canvas support). |
That's exactly what I'm telling you to do. |
What you are telling me to do is not acceptable! (and I refuse to comply!) |
Dude you are really weird. Couple things,
Internet Explorer versions 5,6,7, and 8 do not support the canvas element nor any other HTML5 specs. They will never support the element and specs. While the Excanvas project attempts to bring canvas functionality to browsers that do not support canvas, it is frowned upon to try and deliver any experience greater than drawing lines and circles to that browser. Excanvas has to fake what is provided natively by your modern browsers. Supporting IE 5, 6, 7, and 8 is a dumb idea because it will never run optimally. The bottom line is, If you're so set on creating an HTML5 experience then you MUST urge and give your visitors a message indicating that its time to upgrade. Have them install Chrome / Firefox on XP if Microsoft won't deliver IE9. |
@jmwhite999 I had a patch to add Explorer Canvas support to EaselJS; I'll try to dig it up for you. @erik5388 We do not all have the luxury of designating certain browsers (which have significant market share) as unworthy of our product. Often, suboptimal canvas support is better than none at all, and falling back to Flash is not forwards-compatible. The browser holy wars are long over; decisions on which browsers to support are best left to the users of the library, not the maintainers. |
To alekstorm, I totally agree with your comment to erik5388: |
@jmwhite999 The changes are in #100, which you can use until it's merged. |
Thanks for taking the time to do this and look forward to the merging. |
I tried to do a merging on my local hard drives and test the new game.html and it wouldn't display anything on the canvas at all in either IE8 (Version 8.0.6001.18702) or Firefox (version 3.6.25) so I downloaded the last release package, "EaselJS_v0_4_0.zip" from this page: ..and it worked fine in Firefox (but of course not in IE8), ..together with the files from the above zip and it was still working in Firefox, ..then I found the file that was causing the game not to display anything on the canvas in firefox. The non-working container.js file is 18743 bytes (dated 01.16.2012) I don't know enough about the differences in the javascript between the two container.js files to know exactly what is causing the new container.js file not to show anything on my version of Firefox, but just to give a heads-up there may be some issues after the merging - we'll have to see.. |
Right, that's a separate issue that I forgot to create another pull request for. Try merging #101 into your local copy. |
I have uploaded the merged files (EaselJS_v0_4_0.zip files with alekstorm #100 files) to my scratchpad site. So if anyone wants to do some testing in IE8 (rather than IE9 in IE8 emulation mode) and maybe offer some suggestions to get something showing up on the canvas --note: I did notice there were a couple white pixels in the upper left edge of the canvas, so maybe the code is partially working somehow... |
You should be merging these patches into the latest revision from the git repository, not the 4.0 release zip file. You can then upload your own version of the repository to GitHub, which makes it much easier to compare notes. If you're not sure how to do this, try googling around for a git tutorial. With the performance hit on IE8, heavy canvas animation (as in a game) is probably a bit overreaching. I'd stick to generating static images or simple animations where lag is unlikely to be noticed. That said, there may be other, non-performance-related bugs we could work on that the game example exposes. But it will never run fast enough to make Asteroids playable. |
Hey guys, what is the current status? I really like the idea to use EaselJS together with "ExplorerCanvas". Is there any progress in terms of integration? |
To bennyn, |
I'm not sure why you linked to the Impact site, since that library apparently does not support IE<9. I am not involved in the development of ExplorerCanvas, which is where any performance bottlenecks would be found. If it is indeed "obviously technically possible" to make a game engine run at playable speed on top of ExplorerCanvas, I encourage you to implement the necessary changes - here's the project page. For starters, I'm sure the devs would appreciate your contribution of better rotation routines. |
Hi alekstorm, |
1 similar comment
Hi alekstorm, |
Sorry about the double posting..was on a flake-y wifi connection. |
Can't you just add a try catch to the code that tries to get the canvas? Nobody is expecting this lib to work in a browser that doesn't support canvas. Personally, I would like easeljs to not throw a bunch of errors when the scripts are loaded into a page with no canvas support. It should just load as normal and then return an error if you try to instantiate any of the objects and let the developer handle them as needed. |
Here's how I have chosen to approach it. EaselJS's core focus is absolutely canvas enabled browsers, and we will not be spending a lot of time or effort on older browsers without canvas support. However, what I have done is make it easier for others to plug in alternate canvas implementations (like explorerCanvas) so that they can do so if they choose. This is via an optional "createCanvas" method exposed in the createjs namespace. Anywhere that EaselJS uses a canvas, it will check for this method, and if one is defined, it will call it to get a canvas. If not, it will use the default document.createElement("canvas") approach. This lets developers interested in supporting older browsers do something like this: createjs.createCanvas = function() { return new ExplorerCanvas(); } Obviously this can be expanded with browser checks and such. Respectful feedback is welcome. Cheers, |
Firstly, thanks for solutions given by @gskinner. |
@sorabh86 Thank you for the feedback. Given the increasing rarity of browsers that don't support canvas, and the massive performance disparity when trying to fall back to alternative solutions (excanvas, css, etc - over 10x slower), increasing support for these older browsers is not a priority at all for this project. This gets even worse when you consider our new WebGL renderer, which for certain types of content will raise that gap by another full order of magnitude (approaching 100x or more). Putting major limitations on the future direction of EasellJS, and diverting large amounts of engineering in order to support browsers that are 4 major versions old doesn't make a lot of sense in my opinion. |
@gskinner Thanks for quick reply. |
I know there is already an issue #55 (about trying to load the easel.js via IE and throwing errors).
As daniellmb notes in that issue post:
"Internet Explorer 6, 7 and 8 still make up about 57% of the browser market."
You really HAVE TO DO SOMETHING about IE support if you expect Easel.js to move out of the
"experimental" code and into the browser mainstream. (sorry to have to shout but no way to bold)
Of course IE6-8 doesn't have canvas support, but here is my proposal -
there is a project that uses javascript and Microsoft's IE proprietary vml scripting to simulate canvas events.
It's called explorercanvas:
http://excanvas.sourceforge.net/
Yes you take a performance hit but sometimes you can get canvas stuff to run using this library. At least its something..
Is there any chance that the easel.js code could be annotated to show where explorercanvas code could be substituted for easel.js code if the browser detected is IE?
The text was updated successfully, but these errors were encountered: