In Zwischenablage kopieren mit Javascript in Firefox
Ich muss wirklich einen Weg, um text zu kopieren, um die OS-Zwischenablage in Firefox.
Weiß, es ist einfach im IE und nicht in Chrome und Opera, es sei denn, der flash verwendet wird. Aus verschiedenen Gründen bin ich nicht in der Lage zu verwenden die flash-Lösung!
Hatte es in der Vergangenheit, aber jetzt den netscape.Sicherheit.PrivilegeManager.enablePrivilege geschützt ist, so weit wie ich herausfinden kann (seit ver. 17).
Sieht es aus, als wenn es noch möglich ist nach diesem Artikel:
https://developer.mozilla.org/en-US/docs/Using_the_Clipboard
Glaube, es ist noch erforderlich ist, um die Möglichkeit in der user.js Datei wie diese
user_pref("capability.policy.policynames", "allowclipboard");
user_pref("capability.policy.allowclipboard.sites", "http://");
user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
Aber wie soll ich es tun? Haben einige test-ohne großen Erfolg und denke, es ist keine Anleitung im web, die erklären, wie soll es getan werden in einer generischen Art und Weise. E. g. eine einfache Anleitung, wie Sie javascript auf die Zwischenablage zugreifen. Hoffentlich ist auch eine Anleitung, die verwendet werden können durch den Benutzer leicht. Mache es und poste es hier, brauchen aber eine funktionierende Lösung.
Laut web gibt es 2 Lösungen für das kopieren in die Zwischenablage;
document.execCommand("copy", false, null)
und
var gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString("Put me on the clipboard, please.");
Beide generieren einen Fehler mit meinem ersten Versuch.
Die Lösung unten müssen die Benutzer zum drücken von STRG+C und ich brauche eine Lösung, wo Sie den text kopieren, basierend auf der Presse einer Taste (viele auf einer einzigen Seite).
Meine alte Lösung war so:
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if(clip)
{
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if(trans)
{
var str = new Object();
var len = new Object();
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
if(str)
{
var clipid=Components.interfaces.nsIClipboard;
if(clipid)
{
str.data = cliptext;
trans.addDataFlavor('text/unicode');
trans.setTransferData("text/unicode", str, cliptext.length*2);
clip.setData(trans, null, clipid.kGlobalClipboard); //No return value
return 0;
}
}
}
}
Komponenten.Klassen ist nicht definiert, in den nicht-privilegierten code (nicht add-on usw) also ich glaube nicht, dass jede andere Lösung mit dieser funktioniert nicht mehr. Eine Möglichkeit ist ein add-on ausgeführt werden soll, in einer privilegierten code-Bereich und senden Sie den text, der kopiert werden sollen, um dieses add-on für die Handhabung der Kopie der OS-Zwischenablage (nettes neues Projekt).
Diese nur verlassen, Dokument.execCommand("copy", false, null) in das Feld als ein stand-alone-Lösung.
Versuchte diesen code, und es muss nicht alles kopieren, um die OS-Zwischenablage - aber nicht, erzeugen keine Fehler btw.
var pre = document.getElementById('pcryptcopytext');
if(!pre)
{
pre = document.createElement("pre");
pre.setAttribute('id', 'pcryptcopytext');
pre.setAttribute('style', 'opacity: 0; position: absolute; top: -10000px; right: 0;');
document.body.appendChild(pre);
}
pre.innerHTML = cliptext;
pre.contentEditable = true;
//pre.unselectable = "off";
//pre.focus();
if (document.createRange)
{
var rng = document.createRange();
rng.selectNodeContents(pre);
document.execCommand("copy", false, null);
document.body.removeChild(pre);
}
So, hat jemand eine funktionierende Lösung?
InformationsquelleAutor Beast | 2014-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gelöst durch die Schaffung eines Firefox-Add-on, das macht das clipboard-Objekt: https://github.com/myplaceonline/myplaceonline_ffclipboard
Beispiel:
InformationsquelleAutor Kevin
Sieht aus wie dieser wird nicht mehr unterstützt, und es gibt keinen Ersatz 🙁
https://support.mozilla.org/en-US/questions/977068#answer-500083
Vielleicht machen einige Lärm in ein Firefox-bug wird uns helfen, eine (sichere) Lösung.
InformationsquelleAutor nh2