Skip to content

Conversation

mendelk
Copy link

@mendelk mendelk commented Jul 28, 2020

In situations where the document.body was replaced, the check if hiddenTextarea.parentNode === null would return false even if in fact the new document.body had no current hiddenTextarea, thus requiring a new one to be appended. The new logic checks if !document.body.contains(hiddenTextarea), which should account for the current document.body.

An alternative solution would be to check if hiddenTextarea.isConnected, which is probably more performant. Unfortunately, this property is not present in IE.

Yet another solution which might be more performant at the expense of being more verbose, is to recursively check if hiddenTextarea.parentNode === null to confirm that it's in fact still in the current DOM tree.

Fixes #247

In situations where the `document.body` was replaced, the check if `hiddenTextarea.parentNode === null` would return `false` even if in fact the _new_ `document.body` had no current `hiddenTextarea`, thus requiring a new one to be appended. The new logic checks if `!document.body.contains(hiddenTextarea)`, which should account for the _current_ `document.body`.

An alternative solution would be to check if `hiddenTextarea.isConnected`, which is probably more performant. Unfortunately, this property is not present in IE.

Yet another solution which _might_ be more performant at the expense of being more verbose, is to recursively check if `hiddenTextarea.parentNode === null` to confirm that it's in fact still in the _current_ DOM tree.

Fixes Andarist#247
@changeset-bot
Copy link

changeset-bot bot commented Jul 28, 2020

💥 No Changeset

Latest commit: a43519c

Merging this PR will not cause any packages to be released. If these changes should not cause updates to packages in this repo, this is fine 🙂

If these changes should be published to npm, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@derrickreimer
Copy link

I encountered this situation (using Turbolinks) and can confirm that this PR solves the problem in my case.

leosullivan1 added a commit to leosullivan1/react-textarea-autosize that referenced this pull request Apr 29, 2021
In situations where the document.body was replaced, the check if hiddenTextarea.parentNode === null would return false even if in fact the new document.body had no current hiddenTextarea, thus requiring a new one to be appended. The new logic checks if !document.body.contains(hiddenTextarea), which should account for the current document.body.

See here for more details Andarist#292
@mendelk
Copy link
Author

mendelk commented Aug 13, 2021

@Andarist Is there anything I can do to help get this merged? I get that you've got lots of other things vying for your attention!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Resize Stops Working after Browser Back
2 participants