Greasemonkey\JavaScript Кнопка "Копировать в буфер обмена"

Я пытаюсь написать сценарий JavaScript для добавления к greasemonkey, который добавляет кнопку после элемента. Нажатие на эту кнопку должно скопировать текст родительского элемента на клавиатуру. Я видел множество примеров, которые копируют уже выделенный текст в буфер обмена, например:

    <SCRIPT LANGUAGE="JavaScript">
    <!-- Begin
    function copyit(theField) {
    var selectedText = document.selection;
    if (selectedText.type == 'Text') {
    var newRange = selectedText.createRange();
    theField.focus();
    theField.value = newRange.text;
    } else {
    alert('Alert: Select The text in the textarea then click on this button');
    }
    }
    // End -->
    </script>
    <input onclick="copyit(this.form.text_select)" type="button" value="Click Here to Copy the Highlighted Text" name="copy_button">

Нашел здесь.

Я также обнаружил, что вы можете выбрать текст в элементах ввода. Я попытался объединить обе техники, а также многие другие, но пока не нашел решения. Я даже не уверен, почему код выше копирует в буфер обмена. У кого-нибудь есть решение этого?

2 ответа

Решение

Если вы нашли время, чтобы прочитать статью полностью, автор утверждает, что это не работает для Firefox...
На самом деле, я думаю, что это даже не работает для IE, так как не имеет ничего общего с буфером обмена!

Существует метод, использующий Flash, потому что по умолчанию Firefox запрещает доступ к буферу обмена из соображений безопасности.
В противном случае, классический способ сделать копию:

var tc = textToCopy.replace(/\n\n/g, '\n');
if (window.clipboardData) // IE
{
  window.clipboardData.setData("Text", tc);
}
else
{
  unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  const clipboardHelper = Components.classes
      ["@mozilla.org/widget/clipboardhelper;1"].
      getService(Components.interfaces.nsIClipboardHelper);
  clipboardHelper.copyString(tc);
}

после включения копии (для данного сайта).

Вы уверены, что ваш пример работает? Это не в моем браузере. Но взгляните на следующую страницу: http://www.jeffothy.com/weblog/clipboard-copy/

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