diff --git a/src/commands/view/SelectComponent.js b/src/commands/view/SelectComponent.js index a7c80d2a9..6f86b63c2 100644 --- a/src/commands/view/SelectComponent.js +++ b/src/commands/view/SelectComponent.js @@ -7,7 +7,7 @@ import { isTaggableNode, getViewEl } from 'utils/mixins'; -import { isVisible } from 'utils/dom'; +import { isVisible, isDoc } from 'utils/dom'; import ToolbarView from 'dom_components/view/ToolbarView'; import Toolbar from 'dom_components/model/Toolbar'; @@ -116,7 +116,7 @@ export default { // Get first valid model if (!model) { let parent = $el.parent(); - while (!model && parent.length > 0) { + while (!model && parent.length && !isDoc(parent[0])) { model = parent.data('model'); parent = parent.parent(); } @@ -292,7 +292,7 @@ export default { if (!model) { let parent = $el.parent(); - while (!model && parent.length > 0) { + while (!model && parent.length && !isDoc(parent[0])) { model = parent.data('model'); parent = parent.parent(); } diff --git a/src/utils/dom.js b/src/utils/dom.js index 512e86e6f..2b57785e9 100644 --- a/src/utils/dom.js +++ b/src/utils/dom.js @@ -8,6 +8,8 @@ const KEY_CHILD = 'children'; export const motionsEv = 'transitionend oTransitionEnd transitionend webkitTransitionEnd'; +export const isDoc = el => el && el.nodeType === 9; + export const isVisible = el => { return ( el && !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length)