so then:

```javascript
var empty = !dom.message.firstChild || (!dom.message.firstChild.nextSibling && dom.message.firstChild.tagName === 'BR');
```

In all cases, I'd like to avoid textContent and querySelectorAll. In my understanding we'll call this each time the user types a character, I'd like this to be fast.

So other tips based on your current code, if you still don't like mine :
* instead of getting textContent, how about checking that we have a firstChild, that firstChild is either an element or a text node, and if that's a text node it's `nodeValue !== ''`.
* do "checking if we have at least one iframe" before getting all br
* if we don't have any iframe, you can then use my first proposition: `empty = !dom.message.firstChild || !dom.message.firstChild.nextSibling`

I still prefer my first proposition which should have a constant time complexity :)