Расширение Firefox, которое копирует HTML-ссылку на текущую веб-страницу в буфер обмена, а не только на URL

Ситуация

Мне нужно автоматизировать копирование HTML-ссылки на текущую страницу, которая просматривается на текущей вкладке Firefox, в другие редакторы WYSIWYG. Это не то же самое, что копирование простого текста URL-адреса, и это не то же самое, что вставка простого текста заголовка веб-страницы. Это также не то же самое, что переход на другую веб-страницу с HTML-ссылкой на интересующую страницу, выделение текста курсором мыши и ввод CTRL-C для копирования его в буфер обмена текущих операционных систем (оба Linux и Windows, не должно иметь никакого значения). Только обновление в буфер обмена должно быть автоматизировано; вставка из буфера обмена в целевое приложение будет выполняться вручную.

Требуемый вариант использования выглядит следующим образом:

  1. Пользователь просматривает любую веб-страницу из Firefox.
  2. Пользователь вводит некоторую указанную пользователем последовательность клавиш, которая не конфликтует со стандартными встроенными привязками клавиш Firefox.
  3. Затем Firefox сделает только часть того, что делает Book Linkmarklet "Копировать ссылку": вместо того, чтобы открывать новое отдельное окно / вкладку, создавать и отображать HTML-код для ссылки, а затем требовать от пользователя потратить впустую движение при выборе и копировании ссылки в буфер обмена расширение затем отформатирует сам HTML и скопирует его в буфер обмена напрямую.
  4. Затем пользователь выбирает любую из целей, описанных ниже, и вводит CTRL-V, чтобы вставить форматированный текст.
  5. Затем пользователь видит ссылку как ссылку в этой целевой области и не видит ничего подобного буквально http://...

Например, если просматриваемая веб-страница была http://www.google.com/, и пользователь щелкнул пользовательскую последовательность клавиш, и если пользователь вставил ее в какой-то документ Google, то, что он увидит в этом документе, нет http://www.google.com и они не увидят Google, но вместо этого будет видеть то, что вы увидите, когда читаете это в Stackru в веб-браузере: Google

Теперь есть расширения Firefox и букмарклеты, которые подходят близко, но все они не включают в себя никакого чистого уменьшения движения мыши и / или накладных расходов на нажатие клавиш, что является самым трата времени в этом часто встречающемся случае использования. Мои поиски существующего расширения не дали ничего, что бы точно соответствовало моим потребностям (см. Раздел "Исследования" ниже). Поэтому я думаю, что мне может понадобиться свернуть свое собственное расширение (или изменить существующее), если только кто-то не сможет указать мне на существующее расширение, которое предоставляет эту функциональность.

Расширение, которое я имею в виду, должно работать в Firefox версии 11 или выше, работающей в Linux или любой версии Windows. Требуется только Firefox и подходящее расширение Firefox, а не какое-либо другое специальное программное обеспечение.

Цели пасты должны быть:

  1. GMail составляет текстовые области
  2. Документы Google
  3. Документы Microsoft Word
  4. Microsoft Outlook составляет текстовые области.
  5. Любой другой редактор WYSIWYG, такой как редактор сообщений Blogger.
  6. Блокнот (в этом случае вставляется только заголовок веб-страницы, а не URL-адрес или заголовок веб-страницы и URL-адрес в виде отдельного открытого текста; в любом случае).

О пользовательских привязках клавиш: если уже было расширение, которое выполняло вышеописанное, но не обеспечивало возможность привязки к нему привязки клавиш, тогда я мог бы ожидать использовать расширение расширения keyconfig для обработки этого аспекта. На самом деле, это может быть даже предпочтительнее; Пока не знаю

Исследование

Ниже приведены подходы, которые я исследовал, которые приблизились к тому, что я хочу, но не совсем соответствовали потребности:

  1. Взлом на Copy Link Bookmarklet не сработает, потому что, насколько я могу судить, нет способа обновить буфер обмена ОС из букмарклета, поэтому я считаю, что расширение Firefox необходимо.
  2. В расширении Firefox, как я могу скопировать расширенный текст / ссылки в буфер обмена?
  3. 3 аддона FireFox для упрощения копирования ссылок и текстов привязки - ни одно из перечисленных расширений не делает то, что я хочу, потому что они заставляют вас использовать правую кнопку мыши и перемещаться по одному или двум уровням контекстного меню, что приводит к потере движения.
  4. Копировать текст ссылки (CoLT) - CoLT также поддерживает копирование гиперссылки и связанного с ней текста в виде ссылки в формате расширенного текста, однако она не включает привязку клавиш по умолчанию. Похоже, кто - то еще пытается связать keyconfig с CoLT, что может быть вариантом в качестве решения.
  5. Copy URL Plus - похоже, у него есть логика копирования в буфер обмена, но не похоже, что он поддерживается со времен Firefox 1.x.

3 ответа

Решение

Я отвечаю на свой вопрос:

CTRL-SHIFT-F11 Привязка автоматически перестанет работать, если в одном браузере Firefox установлены и keysnail, и keyconfig. Исправление для меня состояло в том, чтобы просто удалить keynail, поскольку я не использую это.

На самом деле мне не нужно было писать свое собственное расширение Firefox, но мне нужно было отскрести немного кода, который копирует ссылку в формате richtext из расширения Copy Link Text (CoLT) и применить его непосредственно в качестве привязки к расширению keyconfig следующим образом:

  1. Установите расширение keyconfig.
  2. Перезапустите Firefox.
  3. После загрузки Firefox введите CTRL-SHIFT-F12 вызвать меню конфигурации keyconfig.
  4. В нижней части страницы нажмите кнопку Добавить новый ключ.
  5. В поле " Имя" введите подходящее имя, например: Copy Rich Text Link to Current Page,
  6. Введите следующий фрагмент кода Javascript (этот код я вырезал из objCoLT.CopyBoth функция внутри content/colt.js файл внутри расширения Копировать текст ссылки (CoLT):

    var url = content.document.location.href;
    var text = content.document.title;
    
    // Use the users selection instead of the title if text is selected:
    var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
    if (selection != "")
    {
        text = selection;
    }
    
    var richText = "<a href=\"" + url + "\">" + text + "</a>";
    
    var xfer = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
    xfer.addDataFlavor("text/html");
    
    var htmlString = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
    htmlString.data = richText;
    xfer.setTransferData("text/html", htmlString, richText.length * 2);
    
    var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
    clipboard.setData(xfer, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
    
  7. Нажмите Ok.

  8. Вернитесь в главное диалоговое окно Keyconfig, <disabled> должен отображаться в текстовом поле слева от кнопки " Применить".
  9. Щелкните в этом текстовом поле и введите связывание клавиш, которое вы хотите связать с ним, например: CTRL-SHIFT-F11,
  10. Нажмите кнопку Применить.
  11. Нажмите кнопку Закрыть, чтобы закрыть диалоговое окно конфигурации Keyconfig.

Чтобы проверить это, выполните следующие действия:

  1. В Firefox перейдите на произвольную страницу.
  2. Введите CTRL-SHIFT-F11 (или любую другую комбинацию клавиш, которую вы выбрали выше).
  3. Обратите внимание, что нет диалоговых окон; это намеренно.
  4. Откройте Google Documents и создайте новый документ.
  5. Нажмите на новый документ и введите CTRL-V,
  6. Вы должны увидеть HTML/ форматированный текст ссылки, вставленной в.
  7. Нажмите на ссылку, а затем нажмите на URL слева от Change,
  8. Браузер должен открыть исходную страницу, соответствующую этому URL.

Существует несколько расширений, которые предлагают копирование заголовка и URL-адреса, но мало кто из них поддерживает создание форматированного текста. Суть в том, что скопированный текст нужно отформатировать в html с расширениемhref и его нужно скопировать как тип text/html .

В конце концов я выбрал расширение CopyTabTitleUrl. (GitHub) Он поддерживает оба требования, а также имеет функцию привязки клавиш вместе с кнопкой на панели инструментов, которая также может функционировать как копирование одним щелчком мыши.

Установите для параметра Формат :

      <a href="${url}">${title}</a>

Затем активируйте расширенный режим и обязательно установите флажок « Копировать в формате text/html » в разделе «Другое». После этого, используя копию формата, результат можно корректно вставить в офисные приложения. И Stack Exchange, очевидно, поскольку ссылки выше были созданы надстройкой.

Обратите внимание, что реализация копирования URL-адресов в Edge выглядит несколько иначе. При вставке открытого текста по умолчанию Edge просто вставит URL-адрес, в то время как этот подход, конечно, вставит неформатированный HTML. Но это достаточно близко.

Мне удалось скопировать URL-адрес как HTML со следующей закладкой:

      javascript: navigator.clipboard.write([new ClipboardItem({ ["text/html"]: new Blob([`<a href="${document.location.href}">${document.title}</a>`], { type: "text/html" }) })]);

К сожалению, в Firefox API записи в буфер обмена по- прежнему требует установки thedom.events.asyncClipboard.clipboardItemк trueв о: конфиг.

Другие вопросы по тегам