I am reopening this as I believe it is a big issue for real world Elm applications.
At Humio are have big problems with browser extensions and third-party trackers and other scripts in our Elm application.
We finally after several weeks of hard work were able to convert from 0.18 -> 0.19. We use a fullscreen elm application to be able to control navigation etc. We deployed and people starting complaining about nothing showing up in the browser! Oh no!
Turns out that these people had browser extensions that injected things into the tag of every page (Yikes). But that is unfortunately “the real world” where people have crap like that. Adding anything not controlled by Elm to the body will make Elm throw errors over and over - which is fair.
Unfortunately this completely stops the application from running, and means you cannot make a website based on Elm fullscreen - it simply might not show for many users :S
It also means that you cannot use some tools like Hubspot or Drift for forms and analytics, because you often have no control over where they inject their iframe tag (meaning the end body usually). (We had to remove Hubspot)
A solution is to use an embedded Elm application, but that limits navigation in your elm app, which is a huge sacrifice to make. The best solution in my mind, would be that Elm fullscreen applications could be added to a top level wrapper element in body, and Elm would ignore anything outside that.
I think this merits an option to run Elm fullscreen in a wrapper element. Let us jointly make a RFC and create an issue for this. I know @Aaron_White had a workaround (very hacky) that could be employed for now.