我正在为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 ) ;
};
谢谢...
答案 0 :(得分:0)
从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”);