Unfortunately, even if you are using one of the tricks to force IE to deal with HTML5 elements shivs don’t work when dealing with innerHTML before an element is appended to the DOM:

However, the shiv doesn’t work in Internet Explorer when an element’s content is added with innerHTML before being appended to the document. That’s a common use case, and noticeable in libraries like jQuery when you try to append or load (etc.) HTML5 content

Note that you don’t have to use innerHTML ever.
.
Did people forget about document.createElement or is it that these days only designers with no programming knowledge do javascript and implement aberrations like that code snippet?
How is that piece using innerHTML ever supposed to scale? just add more crude HTML on that abomination of a string?

createElement can be quite slow, and requires more code. That isn’t to say that innerHTML is “superior”, but that it has its uses and to dismiss it entirely is to be even more conservative than the HTML5 DOM. The concern of having arbitrary HTML in the behavior layer is real, but can be alleviated by getting HTML templates from another resource; the actual code executed may still be the same, but it allows better maintenance.

@eyelidlessness,
so better maintenance means editing a huge string that lacks proper indenting and whitespaces in which you can even throw tag soup and no validator will be able to help you debug that malformed code?
.
Don’t fall in the cargo cult that document.createElement is slow. It depends on browser implementation and how tuned is your code. I created a test in jsperf and I’m not getting the innerHTML version any faster than the DOM one. In fact, DOM runs twice as fast as innerHTML in Chome, Firefox and even IE. Even better, the DOM version does proper cleanup and can hold a reference to the inserted node without any extra effort (you would need at the very least a document.getElementsByTagName to fetch your innerHTML div)
.
test it yourself: http://jsperf.com/dom-vs-innerhtml/2

Using innerHTML is wrong as it’s horribly unreliable in applications. Also I’m getting fairly sick of seeing jQuery so consistently as it’s also not reliable in my experience. Stick to the DOM and object detection.