Кнопка Greasemonkey\JavaScript для копирования в буфер обмена
Я пытаюсь написать JavaScript script для добавления в greasemonkey, который добавляет кнопку после элемента. Кнопка onClick для этой кнопки должна скопировать текст элемента родителей на клавиатуру. Я видел множество примеров, которые копируют уже выбранный текст в буфер обмена, например:
<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">
Нашел здесь.
Я также обнаружил, что вы можете выбрать текст во входных элементах. Я пробовал комбинировать обе методики, а также многие другие, не имея жизнеспособного решения. Я даже не уверен, почему код выше копирует в буфер обмена. У кого-нибудь есть решение?
Ответы
Ответ 1
Если вы потратили время на чтение полной статьи, автор утверждает, что это не работает для 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);
}
после включения копирования (для данного сайта).
Ответ 2
Вы уверены, что ваш пример работает? Это не в моем браузере. Но взгляните на следующую страницу: http://www.jeffothy.com/weblog/clipboard-copy/