I've got an app that under some circumstances causes IE8 to popup the compatibility message and reload in compat mode:
a problem displaying caused internet explorer to refresh the webpage using compatibility view
This is rare, and does not occur due to the meta-tags, as far as I can tell. It happens as a response to user action that alters the DOM. This is the same problem as: https://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-view, but my question is: What types of things cause this, as an aid in fixing it.
Put another way, see this site thesitewizard.com, where a third cause of compatibility mode in IE8 is described as:
and, on occasion, for some other unfathomable, undocumented reason, on pages that are validated as standards-compliant (or, at least, it does this in Release Candidate 1).
And the question is: What unfathomable, undocumented reasons?
After a long debugging session (using old school alerts to pinpoint what was failing where), this seemingly innocous line of dom manipulation was the culprit:
document.getElementById("literal"+varValue).style.display = "none";
There was no error here, and the element was apparently found (ie, this is not a garden variety null pointer).
This is a large scale app, and there is a lot going on around this code. I switched it to the following, and this apparently has prevented the issue:
setTimeout(function(){
var layoutEl = document.getElementById("literal"+varValue);
if (layoutEl)
layoutEl.style.display = "none";
},10)