elm / virtual-dom

The foundation of HTML and SVG in Elm.
https://package.elm-lang.org/packages/elm/virtual-dom/latest
BSD 3-Clause "New" or "Revised" License
209 stars 80 forks source link

domNode.elm_event_node_ref is undefined in Internet Explorer 11, Edge (early versions) #101

Closed BumbrT closed 7 years ago

BumbrT commented 7 years ago

Reproducing in IE11 and early versions of Edge. Chrome, Safari, Firefox, latest Edge not affected. Elm 0.18
"elm-lang/core": "5.0.0 <= v < 6.0.0", "elm-lang/dom": "1.1.1 <= v < 2.0.0", "elm-lang/html": "2.0.0 <= v < 3.0.0", I tried to build minimum reproduction example, but can't catch this bug. So i can only reproduce it as a part of large project. App stops handling events from element, because eventNode is undefined, so click event does not propagates.

Here is my research in source code http://take.ms/hjwox http://take.ms/ckJmn I have no idea how to build smaller example, maybe you can help me with suggestion

UPD: Found WA with using Html.Keyed.node, maybe it can be usefull for someone. I think this makes VDOM merges less complicated.

process-bot commented 7 years ago

Thanks for the issue! Make sure it satisfies this checklist. My human colleagues will appreciate it!

Here is what to expect next, and if anyone wants to comment, keep these things in mind.

evancz commented 7 years ago

I am tracking all of the VirtualDom.map ideas in #105 so that it is clearer how to make coherent changes.

I'll close here, cleaning up the issue queue. The idea is that this content is all available for reference, but easier for me to find. Point is, thanks for the report!

evancz commented 7 years ago

Separately, is this a problem with development builds of IE? Or is it a problem with actually released browsers?

BumbrT commented 7 years ago

Reproducing bug in the latest version of IE11 11.413.15063.0 Latest edge behaves correctly. I can easily reproduce issue in my project. I will try to create SSCCE later, getting no luck with it.

allenap commented 6 years ago

@cachar and I were able to work around this, and @lukewestby previously too, by separating the Html.map from the problematic view code by wrapping it in a div:

i.e. from:

viewSomething : Html OtherMsg

viewBiggerThing : Html Msg
viewBiggerThing =
  div [] [ Html.map BiggerOtherMsg viewSomething ]

to:

viewSomething : Html OtherMsg

viewBiggerThing : Html Msg
viewBiggerThing =
    div [] [ Html.map BiggerOtherMsg <| div [] [ viewSomething ] ]