Javascript: 如何在光标当前位置插入域?

Javascript: how do I insert the domain at the current position of the cursor?

能否Javascript以小书签之类的形式,在光标位置插入当前页面的域名?怎么样?

有兴趣同时插入 whosebug.comwww.whosebug.com 以及 www

(用例:我在这里写一个问题,光标在标题文本字段或问题 body 文本区域,我想在当前位置插入域名光标)。

选中textarea时,点击小书签,使用document.activeElement标识textarea,.slice其值,与window.location.origin:

连接
javascript: (() => {
  const textarea = document.activeElement;
  const { selectionStart } = textarea;
  textarea.value = textarea.value.slice(0, selectionStart) + window.location.origin + textarea.value.slice(selectionStart);
})();

如果您希望小书签在 https://robot-parts.confetti.events/ 内的 iframe 中工作,则访问 contentWindow.document 以进入 activeElement:

javascript: (() => {
  const textarea = document.querySelector('.signup-iframe').contentWindow.document.activeElement;
  const { selectionStart } = textarea;
  textarea.value = textarea.value.slice(0, selectionStart) + window.location.origin + textarea.value.slice(selectionStart);
})();

此函数为键盘快捷键 ctrl+g 添加事件列表,并在输入和文本区域标签的光标位置插入当前 url

const fields = ['INPUT','TEXTAREA'];
function doc_keyUp(e) {
   if (e.ctrlKey && e.keyCode == 71) {
    // call your function to do the thing
    console.log(document.activeElement)
    if(fields.includes(document.activeElement.tagName)){
      let myField = document.activeElement;
      let startPos = myField.selectionStart;
      let endPos = myField.selectionEnd;
      myField.value = myField.value.substring(0, startPos)
            + window.location.href
            + myField.value.substring(endPos, myField.value.length);
      }
   }
}
// register the handler
document.addEventListener('keyup', doc_keyUp, false);

演示 https://js.do/6by3/insert-link-at-cursor