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

Ситуация

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

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

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

Например, если просматриваемая веб-страница была http://www.google.com, и пользователь щелкнул пользовательскую последовательность клавиш, и если пользователь вставил это в какой-то документ Google, что они увидят в этом документе не http://www.google.com и они не увидят Google, но вместо этого увидит то, что вы увидите, когда прочитаете это в StackOverflow в веб-браузер: 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 для более простого копирования ссылок и якорных текстов -Ни одно из перечисленных расширений не делает то, что я хочу, потому что они заставляют вас использовать правую кнопку мыши и перемещаться по одному или двум уровням контекстного меню, что приводит к потере движения. - CoLT также поддерживает копирование гиперссылки и связанного с ней текста в виде ссылки в формате расширенного текста, однако она не включает привязку клавиш по умолчанию.Похоже, кто-то еще пытается связать keyconfig с CoLT, который может быть вариантом в качестве решения.
  4. Copy URL Plus - Похоже, он имеетлогика копирования в буфер обмена, но, похоже, она не поддерживается со времен Firefox 1.x.

1 Ответ

2 голосов
/ 25 марта 2012

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

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

На самом деле мне не нужно было писать собственное расширение для Firefox, но я сделал нужно поцарапать немного кода, который копирует ссылку на richtext расширение Копировать текст ссылки (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.
...