aboutsummaryrefslogtreecommitdiff
path: root/src/content
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2018-01-13 12:10:14 +0000
committerGitHub <noreply@github.com>2018-01-13 12:10:14 +0000
commitbe1f8e4d717e326863416d085a0d6e136d9822f7 (patch)
tree1096db9f2d2ae492fce5674c54e6fff7b3799fdb /src/content
parent2302a1d8b5472b30fd202070b71dc6c43f7e469c (diff)
parent54a7662cd1e7372910e9ce81aae1a904f3b26c82 (diff)
Merge pull request #300 from usk/feature/open-clipboard's-url
open clipboard's URL in current/new tab
Diffstat (limited to 'src/content')
-rw-r--r--src/content/actions/operation.js2
-rw-r--r--src/content/urls.js26
2 files changed, 27 insertions, 1 deletions
diff --git a/src/content/actions/operation.js b/src/content/actions/operation.js
index 1c0a5fb..b4b2e38 100644
--- a/src/content/actions/operation.js
+++ b/src/content/actions/operation.js
@@ -63,6 +63,8 @@ const exec = (operation, repeat, settings) => {
type: messages.CONSOLE_SHOW_INFO,
text: 'Current url yanked',
});
+ case operations.URLS_PASTE:
+ return urls.paste(window, operation.newTab ? operation.newTab : false);
default:
browser.runtime.sendMessage({
type: messages.BACKGROUND_OPERATION,
diff --git a/src/content/urls.js b/src/content/urls.js
index 8f8a1ac..9b7b284 100644
--- a/src/content/urls.js
+++ b/src/content/urls.js
@@ -1,3 +1,5 @@
+import messages from 'shared/messages';
+
const yank = (win) => {
let input = win.document.createElement('input');
win.document.body.append(input);
@@ -12,4 +14,26 @@ const yank = (win) => {
input.remove();
};
-export { yank };
+const paste = (win, newTab) => {
+ let textarea = win.document.createElement('textarea');
+ win.document.body.append(textarea);
+
+ textarea.style.position = 'fixed';
+ textarea.style.top = '-100px';
+ textarea.contentEditable = 'true';
+ textarea.focus();
+
+ if (win.document.execCommand('paste')) {
+ if (/^(https?|ftp):\/\//.test(textarea.textContent)) {
+ browser.runtime.sendMessage({
+ type: messages.OPEN_URL,
+ url: textarea.textContent,
+ newTab: newTab ? newTab : false,
+ });
+ }
+ }
+
+ textarea.remove();
+};
+
+export { yank, paste };