From 9384fd07d5cc63841a832af053b5e792cae9f798 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sat, 13 Jan 2018 23:05:51 +0900 Subject: implement focus input --- src/content/actions/operation.js | 3 +++ src/content/focuses.js | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/content/focuses.js (limited to 'src/content') diff --git a/src/content/actions/operation.js b/src/content/actions/operation.js index b4b2e38..5fd0f48 100644 --- a/src/content/actions/operation.js +++ b/src/content/actions/operation.js @@ -2,6 +2,7 @@ import operations from 'shared/operations'; import messages from 'shared/messages'; import * as scrolls from 'content/scrolls'; import * as navigates from 'content/navigates'; +import * as focuses from 'content/focuses'; import * as urls from 'content/urls'; import * as consoleFrames from 'content/console-frames'; import * as addonActions from './addon'; @@ -57,6 +58,8 @@ const exec = (operation, repeat, settings) => { return navigates.parent(window); case operations.NAVIGATE_ROOT: return navigates.root(window); + case operations.FOCUS_INPUT: + return focuses.focusInput(); case operations.URLS_YANK: urls.yank(window); return consoleFrames.postMessage(window.document, { diff --git a/src/content/focuses.js b/src/content/focuses.js new file mode 100644 index 0000000..c2658b4 --- /dev/null +++ b/src/content/focuses.js @@ -0,0 +1,10 @@ +const focusInput = () => { + let inputTypes = ['email', 'number', 'search', 'tel', 'text', 'url']; + let inputSelector = inputTypes.map(type => `input[type=${type}]`).join(','); + let target = window.document.querySelector(inputSelector + ',textarea'); + if (target) { + target.focus(); + } +}; + +export { focusInput }; -- cgit v1.2.3