fix: ensure dom binding is not called after detach #8024
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
bug fix
Did you add tests for your changes?
Yes
No, but can add if deemed necessaryIf relevant, did you update the documentation?
No
Summary
Fixes #7814
Functions exposed via
page.exposeFunction
are not unbind when a frame is detached, which in turn causes the error regarding missing execution context being raised.puppeteer/src/common/DOMWorld.ts
Lines 153 to 159 in 1d6c82b
This PR adds
_detached
as a criterion to_hasContext
, indicating there is no context available, causing_onBindCalled
to exit early. An alternative solution could be to remove allRuntime.bindingCalled
listeners on the client when detaching, which will stop events from firing completely.puppeteer/src/common/DOMWorld.ts
Lines 114 to 116 in 1d6c82b
Does this PR introduce a breaking change?
No
Other information
First started happening in
11.0.0
, still reproducible in the latest release.Tested on Node.js 14.x and 16.x.