剪切,复制和粘贴不适用于firefox 15以上版本?

时间:2013-02-11 09:27:52

标签: javascript mozilla

我正在为firefox使用netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect')。

我面临编辑器的浏览器兼容性问题。我们正在使用HTML EDITOR。

在IE中,所有版本剪切,复制和粘贴都适用于此编辑器。

来到mozilla时,这些只适用于某些版本。它不适用于firefox 15 onwords ....

当我右键单击时,剪切,复制和粘贴被禁用。虽然拍摄的钥匙也不起作用。

任何人都可以知道吗?请尽快澄清上述问题。

我们正在为此副本使用所选文本。这是一个示例代码:

PasteText.prototype.execute = function()
{

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) {
    return;
}
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) {
    return;
}
trans.addDataFlavor('text/unicode');
clip.getData(trans,clip.kGlobalClipboard);
var str = new Object();
var len = new Object();
try {
    trans.getTransferData('text/unicode',str,len);
}
catch(error) { return; }
if (str) {
    if (Components.interfaces.nsISupportsWString) {
        str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
    } else if (Components.interfaces.nsISupportsString) {
        str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
    } else {
        str = null;
    }
}

if (str) {
    var code = str.data.substring(0,len.value / 2);
}
code = code.replace( /\n/g, '<br/>' ) ;
window.activeEditor._inserthtml( code ) ;
};

谢谢...

3 个答案:

答案 0 :(得分:0)

来自Mozilla's support pages;

  

从Firefox 17开始,特权代码无法再在网页中运行。 在Firefox 15中,您必须手动更改设置才能启用它。您可以将此类功能引入扩展程序。起点:https://developer.mozilla.org/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages

     

初学者:https://developer.mozilla.org/en-US/docs/XUL_School/Getting_Started_with_Firefox_Extensions

     

更多信息:https://developer.mozilla.org/en-US/docs/Bypassing_Security_Restrictions_and_Signing_Code

Here你可以找到关于这个主题已经进行了几年的(有点激烈的)讨论:)

答案 1 :(得分:0)

我建议ZeroClipboard作为解决方法。您可以按ID选择元素,并使用相同大小的透明Flash视频覆盖它。 Flash允许访问剪贴板,因此您可以剪切/复制内容。如果iThings不是那么担心,它可能是一个不错的选择。

ZeroClipboard需要Flash 9或更高版本。所以我会先使用swfobject来检查所需的版本。

if (swfobject.hasFlashPlayerVersion('9')) {
    $.getScript('/js/ZeroClipboard.min.js', function(){
         ZeroClipboard.setMoviePath('/swf/ZeroClipboard10.swf');
         var clip = new ZeroClipboard.Client;
         clip.setCSSEffects(true);
         clip.setHandCursor(true);
         clip.glue('copy-elem-id', 'copy-elem-id-container');
         clip.addEventListener('onMouseDown', function(e){
             var copyText = $('#textbox-id').text();
             clip.setText(copyText);
         });
    });
}

答案 2 :(得分:0)

我们需要使用about:config添加一些权限,不带引号。

user_pref(“capability.policy.policynames”,“allowclipboard”); user_pref(“capability.policy.allowclipboard.sites”,“https://www.mozilla.org”); user_pref(“capability.policy.allowclipboard.Clipboard.cutcopy”,“allAccess”); user_pref(“capability.policy.allowclipboard.Clipboard.paste”,“allAccess”);