如何在Firefox 3.5中将文本复制到剪贴板?

时间:2010-03-17 01:05:48

标签: javascript firefox

如何将文字复制到剪贴板使用Javascript (或者甚至更好的jQuery函数)而不涉及Flash

我不关心IE和其他浏览器; Firefox 3.5 是唯一重要的更改本地FF设置的浏览器。

修改: 很抱歉不清楚,我做了尝试通过Google找到的前30种方法;他们都没有为我工作。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

答案 2 :(得分:0)

默认情况下,出于安全原因,禁用了firefox对剪贴板的访问。 您可以在firefox中编辑设置以允许它:

在firefox地址栏中输入:“about:config” (没有引号),然后按回车键。

在您现在看到的“过滤器”框中,输入单词 “签名”,你应该只有一个结果 起来。它设置为DISABLED。双击它,然后它 应该改为ENABLED。关上窗户。从那时起 在,网站尝试时,Firefox会警告你 访问你的剪贴板,你可以告诉它“永远 允许这个网站....“

答案 3 :(得分:0)

既然问题已经解决,我想添加一些伪造的JavaScript。

  • 按照接受的答案中的说明配置Firefox。

然后使用类似的东西(从Mozilla资源复制):

function copyToClipboard(text) {

// ask for permission to access clipboard

try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
    alert("Clipboard copying is not allowed. Set signed.applets.codebase_principal_support to 'true' in Mozilla Firefox.");
    return false;
}

// make a copy of the Unicode

var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
if (!str) return false; // couldn't get string obj
str.data = text; // unicode string?


// add Unicode & HTML flavors to the transferable widget

var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans) return false; //no transferable widget found

trans.addDataFlavor("text/unicode");
trans.setTransferData("text/unicode", str, text.length * 2); // *2 because it's unicode 


// copy the transferable widget!

var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
if (!clipboard) return false; // couldn't get the clipboard

clipboard.setData(trans, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
return true;

}