Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blocks: Raw Handling: Find closest PRE by stepping through parents #21366

Merged
merged 2 commits into from
Apr 3, 2020

Conversation

aduth
Copy link
Member

@aduth aduth commented Apr 2, 2020

Fixes #21276 (comment)

This pull request seeks to resolve an error which occurs when pasting text in a RichText field (e.g. paragraph) in Internet Explorer.

As noted by @azaozz at #21276 (comment) , the issue stems from the fact that Node#parentElement is not reliably available in Internet Explorer, depending on the node type.

Implementation Notes:

The changes here address this issue by replacing Element#closest with a basic while loop to step through the ancestry. While Element#closest didn't need to be removed, it would still have required at least parts of an implementation like this in order to iterate to the closest element, so I opted to use this as the primary method to get to the closest enclosing <pre> tag.

Testing Instructions:

Repeat Steps to Reproduce from #21276 (comment), verifying that pasting text in Internet Explorer succeeds without error.

Note: While pasting does now succeed, there appear to be related bugs with regards to selection placement after the paste. The selection range will incorrectly move to the end of the paragraph text.

@aduth aduth added [Type] Bug An existing feature does not function as intended [Feature] Paste Browser Issues Issues or PRs that are related to browser specific problems [Package] Blocks /packages/blocks labels Apr 2, 2020
@aduth aduth requested review from azaozz and ellatrix April 2, 2020 21:12
@aduth aduth requested a review from youknowriad as a code owner April 2, 2020 21:12
@github-actions
Copy link

github-actions bot commented Apr 2, 2020

Size Change: +1.31 kB (0%)

Total Size: 885 kB

Filename Size Change
build/block-directory/index.js 6.03 kB -1 B
build/block-editor/index.js 102 kB +134 B (0%)
build/block-editor/style-rtl.css 10.6 kB -115 B (1%)
build/block-editor/style.css 10.6 kB -118 B (1%)
build/blocks/index.js 57.5 kB +14 B (0%)
build/components/index.js 195 kB -4 B (0%)
build/edit-navigation/index.js 2.71 kB +228 B (8%) 🔍
build/edit-post/index.js 92.5 kB +229 B (0%)
build/edit-post/style-rtl.css 12.1 kB +63 B (0%)
build/edit-post/style.css 12.1 kB +64 B (0%)
build/edit-site/index.js 9.78 kB +667 B (6%) 🔍
build/edit-site/style-rtl.css 4.68 kB +70 B (1%)
build/edit-site/style.css 4.68 kB +71 B (1%)
build/editor/index.js 42.8 kB -3 B (0%)
build/element/index.js 4.44 kB +1 B
build/format-library/index.js 6.95 kB +1 B
build/i18n/index.js 3.57 kB +1 B
build/notices/index.js 1.57 kB +1 B
build/priority-queue/index.js 789 B +9 B (1%)
build/redux-routine/index.js 2.84 kB +1 B
build/warning/index.js 1.14 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.45 kB 0 B
build/api-fetch/index.js 3.8 kB 0 B
build/autop/index.js 2.59 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-library/editor-rtl.css 7.22 kB 0 B
build/block-library/editor.css 7.22 kB 0 B
build/block-library/index.js 110 kB 0 B
build/block-library/style-rtl.css 7.53 kB 0 B
build/block-library/style.css 7.54 kB 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 16.6 kB 0 B
build/components/style.css 16.5 kB 0 B
build/compose/index.js 6.21 kB 0 B
build/core-data/index.js 10.7 kB 0 B
build/data-controls/index.js 1.03 kB 0 B
build/data/index.js 8.23 kB 0 B
build/date/index.js 5.37 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 3.05 kB 0 B
build/edit-navigation/style-rtl.css 239 B 0 B
build/edit-navigation/style.css 241 B 0 B
build/edit-widgets/index.js 4.43 kB 0 B
build/edit-widgets/style-rtl.css 3.74 kB 0 B
build/edit-widgets/style.css 3.74 kB 0 B
build/editor/editor-styles-rtl.css 423 B 0 B
build/editor/editor-styles.css 426 B 0 B
build/editor/style-rtl.css 3.49 kB 0 B
build/editor/style.css 3.49 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 1.93 kB 0 B
build/html-entities/index.js 622 B 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.3 kB 0 B
build/keycodes/index.js 1.7 kB 0 B
build/list-reusable-blocks/index.js 2.99 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 4.84 kB 0 B
build/nux/index.js 3.01 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/rich-text/index.js 14.5 kB 0 B
build/server-side-render/index.js 2.54 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.01 kB 0 B
build/viewport/index.js 1.6 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@azaozz
Copy link
Contributor

azaozz commented Apr 2, 2020

Can confirm pasting in IE11 works properly with this change. Also tested in Chromium and Firefox on win10.

@aduth
Copy link
Member Author

aduth commented Apr 3, 2020

A bit of a struggle to coerce JSDOM to intentionally be non-spec-compliant, but I succeeded in creating a test case in 63d1c4b.

@aduth aduth merged commit 733636f into master Apr 3, 2020
@aduth aduth deleted the fix/ie-paste branch April 3, 2020 16:35
@github-actions github-actions bot added this to the Gutenberg 7.9 milestone Apr 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Browser Issues Issues or PRs that are related to browser specific problems [Feature] Paste [Package] Blocks /packages/blocks [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

IE11: browser crashes on pressing Enter to switch to edit mode
2 participants