Skip to content

Commit

Permalink
Avoid live collection (mozilla#694)
Browse files Browse the repository at this point in the history
* avoid live collection

* fix another possible infinite loop for libs with no live collection support
  • Loading branch information
minas90 authored May 20, 2021
1 parent e197236 commit c3cc653
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions Readability.js
Original file line number Diff line number Diff line change
Expand Up @@ -390,8 +390,8 @@ Readability.prototype = {
} else {
// if the link has multiple children, they should all be preserved
var container = this._doc.createElement("span");
while (link.childNodes.length > 0) {
container.appendChild(link.childNodes[0]);
while (link.firstChild) {
container.appendChild(link.firstChild);
}
link.parentNode.replaceChild(container, link);
}
Expand Down Expand Up @@ -1085,10 +1085,9 @@ Readability.prototype = {
neededToCreateTopCandidate = true;
// Move everything (not just elements, also text nodes etc.) into the container
// so we even include text directly in the body:
var kids = page.childNodes;
while (kids.length) {
this.log("Moving child out:", kids[0]);
topCandidate.appendChild(kids[0]);
while (page.firstChild) {
this.log("Moving child out:", page.firstChild);
topCandidate.appendChild(page.firstChild);
}

page.appendChild(topCandidate);
Expand Down Expand Up @@ -1219,6 +1218,9 @@ Readability.prototype = {
}

articleContent.appendChild(sibling);
// Fetch children again to make it compatible
// with DOM parsers without live collection support.
siblings = parentOfTopCandidate.children;
// siblings is a reference to the children array, and
// sibling is removed from the array when we call appendChild().
// As a result, we must revisit this index since the nodes
Expand Down

0 comments on commit c3cc653

Please sign in to comment.