CTRL + C для копирования URL при наведении мыши - PullRequest
1 голос
/ 01 апреля 2020

Я бы хотел навести курсор мыши на URL-адрес и скопировать его с помощью сочетания клавиш CTRL + Alt + C. Эта topi c в значительной степени описывает 99% того, что я пытаюсь сделать: https://www.autohotkey.com/board/topic/111762-mouse-hover-copy-link/?p=662644

Я взял скрипт пользователя и немного его изменил, чтобы он дал мне URL после части "href". Кстати, я не очень разбираюсь в Javascript, я просто поиграл с ним и мне повезло, что он заработал. Вот что у меня есть:

enter image description here

Это прекрасно работает, но это копирует URL каждый раз, когда я наводю указатель мыши на ссылку. Я не хочу этого, поскольку он просто добавляет несколько ссылок в мой буфер обмена.

В нижней части этого поста находится компонент Autohotkey. Он получает заголовок вкладки, а не URL.

enter image description here

Как я могу изменить и пользовательский скрипт, и AutoHock для того, чтобы делать то, что я хочу?

В качестве дополнительного вопроса - я хотел бы создать дополнительный пользовательский скрипт, используя Javascript выше в качестве ссылки. Этот новый пользовательский скрипт возьмет URL, на который наведена моя мышь, измените его так, чтобы он начинался с слова: ofe | u | и вставляет его в строку URL, когда я нажимаю на ссылку, удерживая клавишу Alt. Итак, в основном:

  1. Наведите указатель мыши на интересующий меня URL-адрес (например, https www.google.com)
  2. Userscript изменит URL-адрес и изменит его на word: ofe | u | https://www.google.com
  3. Удерживая нажатой клавишу Alt + щелкнуть левой кнопкой мыши на URL
  4. word: ofe | u | https://www.google.com - страница загружена или URL-адрес вставлен в строку URL

ОБНОВЛЕНИЕ:

Мне удалось что-то сделать, не знаю, как я сделал это, но я просто поиграл с кодами, которые я нашел в Google. Опять же, я ничего не знаю о Javascript.

https://pastebin.com/S9znPxBU

// ...

Это работает хорошо, но если вы нажмете CTRL + C один раз, он будет просто копировать URL-адреса в буфер обмена всякий раз, когда вы Наведите указатель мыши на ссылку. Я хочу, чтобы он только начал копировать URL в буфер обмена каждый раз, когда я нажимаю CTRL + C.

1 Ответ

1 голос
/ 02 апреля 2020

AutoHotkey здесь не сильно поможет, так как не может получить прямой доступ к URL. К счастью, вы можете использовать новый JavaScript Clipboard API . Он работает только в безопасных контекстах (AKA HTTPS), и страница должна быть в фокусе. Делать это, используя расширение для браузера, было бы лучше, так как он может обойти эти ограничения.

Попробуйте, но сначала нажмите на пустую область в окне предварительного просмотра, чтобы сфокусировать ее.

// Userscript
"use strict";
window.addEventListener("load", () => {
  const evOpts = {capture: true, passive: true};
  let hoveredLink = null;

  for (let link of document.getElementsByTagName("a")) {
    link.addEventListener("mouseenter", () => {
      hoveredLink = link;
    }, evOpts);
    link.addEventListener("mouseleave", () => {
      hoveredLink = null;
    }, evOpts);
  }

  window.addEventListener("keydown", (ev) => {
    if (hoveredLink && ev.ctrlKey && ev.altKey && ev.code === "KeyC") // Ctrl+Alt+C
      // Copy *absolute* URL to the clipboard
      navigator.clipboard.writeText(new URL(hoveredLink.href, location.href)).then(()=>{
        console.log("URL copied to clipboard!");
      }, (err)=>{
        console.error("Error copying URL to clipboard: ", err);
      });
  }, evOpts);
});
<a href="//google.com">Google</a> <a href="https://youtube.com/">Youtube</a>
...