Skip to content

innerHTML fails to diff element when its children have been diffed previously #314

@h5gq3

Description

@h5gq3

illustrated by this test:

it("will diff an element when element's children have been diffed before", function (cb) {
  var p = document.createElement("p");
  diff.innerHTML(p, "<span>Test</span>");
  // this.fixture is <div></div>
  diff.innerHTML(this.fixture, p); // <div><p><span>Test</span></p></div>

  // diff element p child span
  diff.innerHTML(this.fixture.querySelector("span"), "Test 2"); // this works: <div><p><span>Test 2</span></p></div>

  // our test case: diff element p when child span has been diffed previously
  diff.innerHTML(this.fixture.querySelector("p"), "<span>Test 3</span>"); // this doesn't work - still <div><p><span>Test 2</span></p></div>

  setTimeout(() => {
    assert.equal(this.fixture.querySelector("span").innerHTML, "Test 3"); // fails because it's still Test 2
    cb();
  });
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions