【发布时间】:2011-10-10 13:04:21
【问题描述】:
我试图让“复制到剪贴板”在所有浏览器上都能正常工作,但没有成功。
我正在使用 javascript,我不想使用 Zero Clipboard 来做。
请告诉我们我的代码有什么问题。
感谢您的帮助。
下面是代码(目前我的代码只在IE浏览器上运行):-
<script type="text/javascript">
function copyToClipboard(s)
{
if( window.clipboardData && clipboardData.setData )
{
clipboardData.setData("Text", s);
}
else
{
// You have to sign the code to enable this or allow the action in about:config by changing
user_pref("signed.applets.codebase_principal_support", true);
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
// create a transferable
var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
// specify the data we wish to handle. Plaintext in this case.
trans.addDataFlavor('text/unicode');
// To get the data from the transferable we need two new objects
var str = new Object();
var len = new Object();
var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);
var copytext=meintext;
str.data=copytext;
trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);
var clipid=Components.interfaces.nsIClipboard;
if (!clip) return false;
clip.setData(trans,null,clipid.kGlobalClipboard);
}
}
</script>
<textarea id='testText' rows="10" cols="100">Enter your Sample text</textarea><br />
<button onclick="copyToClipboard(document.getElementById('testText').value);" >clipboard</button><br /><br />
<textarea rows="10" cols="100">Paste your text here</textarea><br />
【问题讨论】:
-
据我所知,firefox中默认不能使用js访问剪贴板。唯一通用的方式是flash,而不是js。
-
@Rufus:但就我而言,我需要不使用 flash。
-
@SivaCharan 那很抱歉,你得请你的访问者更改他们的firefox设置,在
about:config中进行一些修改。 -
@JohnKeyes:我不想使用闪存。实际上我已经提到了这个现有的问题,但大多数人给出的解决方案是只使用闪存。但就我而言,我不能使用闪光灯来做到这一点。我想实现为 javascript。如果有任何想法,请告诉我。
标签: javascript clipboard