Hi All,
I was able to get this working but I had to have two separate code bases for the impact library code base. One that will let me run in IE8 and IE7 with flash canvas pro and one for everything else.
To continue my earlier list -
1. Don't pre render backgrounds - this creates a separate canvas in the backend and swaps it in and since we can't have more than one canvas it won't work.
2. You won't be able to use fonts, works similar to pre rendering of backgrounds - you can use text that is z-indexed above the game though to display things like a HUD and score, etc.
3. Remove anything that relates to sound.js so you won't be able to use Sound, SoundManager or Music. This will require editing a few files but is pretty easy to handle. If you want to use sound effects though you can use something like
http://jplayer.org/ where you instantiate a jplayer object in the background of the page and then simply have it play the sound file needed at your given event. Pretty easy to setup with a pub sub relationship. jPlayer uses flash as its fall back to play mp3 files so will work in all browsers!
4. input.js - I used jquery in combination with impact to handle all the input binding statements so instead of say -
window.addEventListener... I am using a jquery equivelant bind function.
So with changing all of that in input.js so example -
window.addEventListener('keydown', this.keydown.bind(this), false );
becomes
$(document).bind('keydown', this.keydown.bind(this));
and updating all the specific references in input.js I was able to get everything working. The reason I did this with jquery is jquery will still let you bind to events that the dom may not actually know exists such as events the canvas itself may throw as ie7 and 8 have no idea what the canvas even is. Also jquery will let you run preventDefault and stop propogation on its own events where as IE7 and IE8 have no concept of this.
Some notes though ie7 and 8 do not support binding to keydown or keyup on the window, this must be done on the document level. more info here
http://quirksmode.org/dom/events/keys.html
All of the other events were able to be bound with the variable used in the original statements though so just have to watch out for that key up and key down.
5. in the impact library look for if statements that contain the word HTMLElement I believe all of these are just in impact.js file and simply remove that part of the if statement as it is part of an Or clause and all will work fine and won't error in IE7 and IE8.
With the changes above and using Flash Canvas pro you will be able to make your game work in IE7 and IE8. There was a stray comma too in one of the impact library files but when removed it all worked in IE7 then too just use the ie9 dev tools in ie7 mode and you can see where it errors out at. Our game is still in qa now but once ready I'll post some links so you all can see for yourself.
@Datamosh - I would put these changes in github but they are core changes to the impact library so I don't want to publish all their code. If you follow these steps though and the suggestions from setting everything to be loaded after window.load all should work fine. You can use jquery.getScript to load the impact library and then your game after flash canvas is initialized and all will run then.
Hope this can help anyone that has to have impact run in IE7 and IE8 you will have to make some compromizes though and deal with multiple code basis but it is doable.