peek() method #16

wants to merge 1 commit into


None yet
3 participants

jtwb commented Mar 1, 2011

peek() is required for streaming parsers.

In browsers, the live DOM (document.*) must be updated with new output from the HTML parser in these situations (and possibly others):
1 Done reading HTML from a single packet
2 script tag found
3 document.write() call completed

So we need a way to query the parser's DOM state without calling done(), which prevents any further parsing.

This gist shows how peek() would be used in a simple case:

This is a more complex use case where we sync the DOM whenever a script tag appears:


tautologistics commented Mar 4, 2011

Thanks for the contribution! Looking through it now and will get back to you with questions or just accept the pull.

jtwb commented Mar 4, 2011

Sweet! By the way, this is a little unclear from those gist examples: calling peek() will trigger the handler callback function with the partial DOM, so seeing that callback no longer implies that parsing is totally finished.


tautologistics commented Mar 7, 2011

FYI - Working on 1.8 now and working through pull requests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment