#xul #clipboard
#xul #буфер обмена
Вопрос:
Я новичок в мире программирования и пытаюсь разработать расширение для Firefox. У меня есть окно Xul с текстовым полем, и я хотел бы скопировать все текстовое поле и поместить в буфер обмена Firefox и вставить его в любое место браузера firefox.
Помогите мне с некоторым JS-кодом или с использованием xul-кодирования.
Пожалуйста, помогите мне или дайте мне какое-нибудь предложение.
Заранее благодарю вас, ребята.
Ответ №1:
Для копирования текста в буфер обмена проще всего воспользоваться сервисом clipboard helper.
Ответ №2:
Моя проблема исправлена :
Вот скрипт: Этот скрипт копирует весь текст из текстового поля, и вы можете вставить его в любое место браузера Firefox.
<!-- Following script is for copy amp; paste function -->
<script>
<![CDATA[
function copyToClipboard() {
//Select all the text/strings from the textbox.
var copytext=document.getElementById('tb').value;
//alert(document.getElementById('tb').value 'This is XUL');
//An XPCOM wrapper for the data which you want to put on the clipboard.
var str = Components.classes["@mozilla.org/supports-string;1"].
createInstance(Components.interfaces.nsISupportsString);
if (!str) return false;
str.data = copytext;
//This object is the component @mozilla.org/widget/transferable;1 which implements the interface nsITransferable.
var trans = Components.classes["@mozilla.org/widget/transferable;1"].
createInstance(Components.interfaces.nsITransferable);
if (!trans) return false;
trans.addDataFlavor("text/unicode");
trans.setTransferData("text/unicode", str, copytext.length * 2);
var clipid = Components.interfaces.nsIClipboard;
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(clipid);
if (!clip) return false;
clip.setData(trans, null, clipid.kGlobalClipboard);
//alert(document.getElementById('tb').value 'This is fuckin XUL');
pasteFromClip();
window.close();
}
function pasteFromClip() {
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
if (!clip) return false;
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans) return false;
trans.addDataFlavor("text/unicode");
clip.getData(trans, clip.kGlobalClipboard);
var str = new Object();
var len = new Object();
trans.getTransferData("text/unicode",str,len);
str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
str = str.data.substring(0, len.value / 2);
return document.createTextNode(str);
}
]]>
</script>