Расширение Firefox, которое копирует HTML-ссылку на текущую веб-страницу в буфер обмена, а не только на URL
Ситуация
Мне нужно автоматизировать копирование HTML-ссылки на текущую страницу, которая просматривается на текущей вкладке Firefox, в другие редакторы WYSIWYG. Это не то же самое, что копирование простого текста URL-адреса, и это не то же самое, что вставка простого текста заголовка веб-страницы. Это также не то же самое, что переход на другую веб-страницу с HTML-ссылкой на интересующую страницу, выделение текста курсором мыши и ввод CTRL-C для копирования его в буфер обмена текущих операционных систем (оба Linux и Windows, не должно иметь никакого значения). Только обновление в буфер обмена должно быть автоматизировано; вставка из буфера обмена в целевое приложение будет выполняться вручную.
Требуемый вариант использования выглядит следующим образом:
- Пользователь просматривает любую веб-страницу из Firefox.
- Пользователь вводит некоторую указанную пользователем последовательность клавиш, которая не конфликтует со стандартными встроенными привязками клавиш Firefox.
- Затем Firefox сделает только часть того, что делает Book Linkmarklet "Копировать ссылку": вместо того, чтобы открывать новое отдельное окно / вкладку, создавать и отображать HTML-код для ссылки, а затем требовать от пользователя потратить впустую движение при выборе и копировании ссылки в буфер обмена расширение затем отформатирует сам HTML и скопирует его в буфер обмена напрямую.
- Затем пользователь выбирает любую из целей, описанных ниже, и вводит CTRL-V, чтобы вставить форматированный текст.
- Затем пользователь видит ссылку как ссылку в этой целевой области и не видит ничего подобного буквально
http://...
Например, если просматриваемая веб-страница была http://www.google.com/, и пользователь щелкнул пользовательскую последовательность клавиш, и если пользователь вставил ее в какой-то документ Google, то, что он увидит в этом документе, нет http://www.google.com
и они не увидят Google
, но вместо этого будет видеть то, что вы увидите, когда читаете это в Stackru в веб-браузере: Google
Теперь есть расширения Firefox и букмарклеты, которые подходят близко, но все они не включают в себя никакого чистого уменьшения движения мыши и / или накладных расходов на нажатие клавиш, что является самым трата времени в этом часто встречающемся случае использования. Мои поиски существующего расширения не дали ничего, что бы точно соответствовало моим потребностям (см. Раздел "Исследования" ниже). Поэтому я думаю, что мне может понадобиться свернуть свое собственное расширение (или изменить существующее), если только кто-то не сможет указать мне на существующее расширение, которое предоставляет эту функциональность.
Расширение, которое я имею в виду, должно работать в Firefox версии 11 или выше, работающей в Linux или любой версии Windows. Требуется только Firefox и подходящее расширение Firefox, а не какое-либо другое специальное программное обеспечение.
Цели пасты должны быть:
- GMail составляет текстовые области
- Документы Google
- Документы Microsoft Word
- Microsoft Outlook составляет текстовые области.
- Любой другой редактор WYSIWYG, такой как редактор сообщений Blogger.
- Блокнот (в этом случае вставляется только заголовок веб-страницы, а не URL-адрес или заголовок веб-страницы и URL-адрес в виде отдельного открытого текста; в любом случае).
О пользовательских привязках клавиш: если уже было расширение, которое выполняло вышеописанное, но не обеспечивало возможность привязки к нему привязки клавиш, тогда я мог бы ожидать использовать расширение расширения keyconfig для обработки этого аспекта. На самом деле, это может быть даже предпочтительнее; Пока не знаю
Исследование
Ниже приведены подходы, которые я исследовал, которые приблизились к тому, что я хочу, но не совсем соответствовали потребности:
- Взлом на Copy Link Bookmarklet не сработает, потому что, насколько я могу судить, нет способа обновить буфер обмена ОС из букмарклета, поэтому я считаю, что расширение Firefox необходимо.
- В расширении Firefox, как я могу скопировать расширенный текст / ссылки в буфер обмена?
- 3 аддона FireFox для упрощения копирования ссылок и текстов привязки - ни одно из перечисленных расширений не делает то, что я хочу, потому что они заставляют вас использовать правую кнопку мыши и перемещаться по одному или двум уровням контекстного меню, что приводит к потере движения.
- Копировать текст ссылки (CoLT) - CoLT также поддерживает копирование гиперссылки и связанного с ней текста в виде ссылки в формате расширенного текста, однако она не включает привязку клавиш по умолчанию. Похоже, кто - то еще пытается связать keyconfig с CoLT, что может быть вариантом в качестве решения.
- Copy URL Plus - похоже, у него есть логика копирования в буфер обмена, но не похоже, что он поддерживается со времен Firefox 1.x.
3 ответа
Я отвечаю на свой вопрос:
CTRL-SHIFT-F11
Привязка автоматически перестанет работать, если в одном браузере Firefox установлены и keysnail, и keyconfig. Исправление для меня состояло в том, чтобы просто удалить keynail, поскольку я не использую это.
На самом деле мне не нужно было писать свое собственное расширение Firefox, но мне нужно было отскрести немного кода, который копирует ссылку в формате richtext из расширения Copy Link Text (CoLT) и применить его непосредственно в качестве привязки к расширению keyconfig следующим образом:
- Установите расширение keyconfig.
- Перезапустите Firefox.
- После загрузки Firefox введите
CTRL-SHIFT-F12
вызвать меню конфигурации keyconfig. - В нижней части страницы нажмите кнопку Добавить новый ключ.
- В поле " Имя" введите подходящее имя, например:
Copy Rich Text Link to Current Page
, Введите следующий фрагмент кода 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);
Нажмите Ok.
- Вернитесь в главное диалоговое окно Keyconfig,
<disabled>
должен отображаться в текстовом поле слева от кнопки " Применить". - Щелкните в этом текстовом поле и введите связывание клавиш, которое вы хотите связать с ним, например:
CTRL-SHIFT-F11
, - Нажмите кнопку Применить.
- Нажмите кнопку Закрыть, чтобы закрыть диалоговое окно конфигурации Keyconfig.
Чтобы проверить это, выполните следующие действия:
- В Firefox перейдите на произвольную страницу.
- Введите
CTRL-SHIFT-F11
(или любую другую комбинацию клавиш, которую вы выбрали выше). - Обратите внимание, что нет диалоговых окон; это намеренно.
- Откройте Google Documents и создайте новый документ.
- Нажмите на новый документ и введите
CTRL-V
, - Вы должны увидеть HTML/ форматированный текст ссылки, вставленной в.
- Нажмите на ссылку, а затем нажмите на URL слева от
Change
, - Браузер должен открыть исходную страницу, соответствующую этому 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
в о: конфиг.