IE and iFrame Compatibility Mode Inheritance
14 years ago
IE is trying to fix what it has done to the internet, but they are presented with a major issue.
Developers have had to do some horrible stuff to get things to work properly in IE. So it seems MS has decided to have IE start off in Compatibility Mode so that the whole internet doesn't break. The only way to consistently get new IE9 features to work in IE9 is to specifically tell the browser that you want to use them in the meta tag.
Now this sounds like a pretty good solution, because 98% of the sites out there will not be using these IE9 only features. But lets pretend we are an Ad company and want to move away from flash and embrace the direction the web is heading. Our ads will be inside of iFrames to give publishers a layer of security. But according to the rules we need to add a meta tag in our Ad html to enable the new set of features. Now since we can't control what sites our ad appears on directly and we also can't force these sites to make the IE9 switch what do we do? Well the logical thing would be to add the meta tag to our ad html and IE would process the iFrame with the new features.
Unfortunately we are talking about IE, and it doesn't work this way... The iFrame inherits the parents Compatibility mode. So in the Ad you are now forced to handle an alternate state for anything that is IE9 but does not support the new features. The only way to properly target ads is if you have access to the parent document and can detect what mode the browser is in.
This is a major issue and will be giving developers a lot of headaches. But we wouldn't expect anything less from IE ;)