1. Create a non-empty element with the following style applied :empty {display: none} 2. Remove all children of the element or simply set innerHTML to an empty string. 3. At this point the element is hidden. 4. Add some children to the element or set innerHTML to a non-empty string. 5. The element is still hidden. See the attachment for a reproducible test case.
Created attachment 238251 [details] reproducible test case
Safari, Chrome, and Firefox all agree on rendering for this test case. I don't believe there is any remaining compatibility issue.