我是编程世界的新手。我正在尝试为Firefox开发扩展程序。我有一个带文本框的Xul窗口,我想复制整个文本框并放入firefox的剪贴板并将其粘贴到firefox浏览器的任何位置。
帮我解决一些JS代码或使用xul编码。
请帮帮我或给我一些建议。
提前感谢你们。
答案 0 :(得分:1)
要将文本复制到剪贴板,最简单的方法是使用clipboard helper服务。
答案 1 :(得分:0)
我的问题已修复:
以下是脚本:此脚本从文本框中复制整个文本,您可以将其粘贴到浏览器Firefox中的任何位置。
<!-- Following script is for copy & 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>