diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/content/components/common/follow.js | 6 | ||||
| -rw-r--r-- | src/content/components/common/input.js | 10 | ||||
| -rw-r--r-- | src/shared/utils/dom.js | 8 | 
3 files changed, 18 insertions, 6 deletions
diff --git a/src/content/components/common/follow.js b/src/content/components/common/follow.js index 5688da3..ce3d19c 100644 --- a/src/content/components/common/follow.js +++ b/src/content/components/common/follow.js @@ -1,5 +1,6 @@  import messages from 'shared/messages';  import Hint from './hint'; +import * as dom from 'shared/utils/dom';  const TARGET_SELECTOR = [    'a', 'button', 'input', 'textarea', @@ -136,8 +137,9 @@ export default class Follow {      case 'button':        return element.click();      default: -      // it may contenteditable -      return element.focus(); +      if (dom.isContentEditable(element)) { +        return element.focus(); +      }      }    } diff --git a/src/content/components/common/input.js b/src/content/components/common/input.js index f285b0c..ef5af29 100644 --- a/src/content/components/common/input.js +++ b/src/content/components/common/input.js @@ -1,3 +1,5 @@ +import * as dom from 'shared/utils/dom'; +  const modifierdKeyName = (name) => {    if (name.length === 1) {      return name.toUpperCase(); @@ -78,12 +80,12 @@ export default class InputComponent {    }    fromInput(e) { +    if (!e.target) { +      return false; +    }      return e.target instanceof HTMLInputElement ||        e.target instanceof HTMLTextAreaElement ||        e.target instanceof HTMLSelectElement || -      e.target instanceof HTMLElement && -      e.target.hasAttribute('contenteditable') && ( -          e.target.getAttribute('contenteditable').toLowerCase() === 'true' || -          e.target.getAttribute('contenteditable').toLowerCase() === ''); +      dom.isContentEditable(e.target);    }  } diff --git a/src/shared/utils/dom.js b/src/shared/utils/dom.js new file mode 100644 index 0000000..c111ee7 --- /dev/null +++ b/src/shared/utils/dom.js @@ -0,0 +1,8 @@ +const isContentEditable = (element) => { +  return element.hasAttribute('contenteditable') && ( +    element.getAttribute('contenteditable').toLowerCase() === 'true' || +    element.getAttribute('contenteditable').toLowerCase() === '' +  ); +}; + +export { isContentEditable };  | 
