diff options
Diffstat (limited to 'src/content')
| -rw-r--r-- | src/content/actions/operation.js | 2 | ||||
| -rw-r--r-- | src/content/urls.js | 26 | 
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 }; | 
