I am using createNodeIterator to find words inside my document.
Actually I am using almost the exact example code from MDN and MSDN:
- https://developer.mozilla.org/en-US/docs/Web/API/Document/createNodeIterator
- https://msdn.microsoft.com/en-us/library/ff975301(v=vs.85).aspx
This works as expected in Chrome and Firefox.
Unfortunately Internet Explorer 11 just says Exception occurred.
and stops once I call iterator.nextNode
Codepen: https://codepen.io/anon/pen/PKmQEe?editors=1011
Code Example:
var iterator = document.createNodeIterator(document.body, NodeFilter.SHOW_TEXT, {
acceptNode: function acceptNode(node) {
if (node.parentNode.tagName.toLowerCase() === 'span') {
return NodeFilter.FILTER_REJECT;
}
return NodeFilter.FILTER_ACCEPT;
}
}, false);
var nextNode = void 0;
var nodes = [];
while (nextNode = iterator.nextNode()) {
if (nextNode.nodeValue.indexOf('o') > -1) {
nodes.push(nextNode);
}
}
console.log(nodes.length);
nodes.forEach(function (node) {
return node.nodeValue = node.nodeValue.replace('o', 'OO');
});
<p>Lorem</p>
<p>Ipsum</p>
<div><div><div><div><p>Etiam ipsum purus, elementum vitae congue id, scelerisque nec lectus. Sed at urna id nulla elementum rhoncus. Praesent aliquet turpis justo, blandit eleifend sem. In purus eros, commodo vel pretium non, blandit non elit. Mauris tristique velit in neque malesuada congue. Suspendisse luctus varius nisi quis dignissim. Proin magna urna, tristique et adipiscing ut, ultrices ut leo.</p></div><span>Dolor</span></div></div></div>