Dart Polymer: Removing element from DOM seems to be broken, when compiled to JS?

StackOverflow https://stackoverflow.com/questions/22908551

  •  28-06-2023
  •  | 
  •  

Pregunta

I'm trying to remove a element from DOM, which was added via:

document.body.children.add(new DivElement()..innerHtml = "Hello World");

The code

document.body.children.remove(document.body.children.last);

or

document.body.children.removeLast();

works fine in Dartium but fails in Chrome when compiled to JS with an "Assertion failed"-Error. The failed assertion is: assert(node instanceof Node); and is placed in shadow_dom.debug.js:3364:5. It seems that the node to remove isn't an instance of Node?

Any workarounds for that? Dart SDK version is 1.2.0, Chrome version is 32.0.1700.76 m.

¿Fue útil?

Solución

From jmesserly on the bug:

Ah, this is a known limitation from Shadow DOM. Try:

document.querySelector('body')

Unfortunately, from previous bugs filed on https://github.com/polymer/ShadowDOM it is apparently not possible to fix this in the polyfill.

The only problematic members are directly accessing "document" and navigating the tree. As soon as you call a method (like querySelector), anything after that will work. If you use "body" a lot, then try:

final body = document.querySelector('body');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top