Firefox Xul Clipboad

#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>