Ich verstehe ja durchaus, dass JavaScript nicht einfach so auf die Zwischenablage zugreifen sollen darf.
Aber tät es nicht auch eine einfache Whitelist auf Host-Basis?
Stattdessen bedarf es solch einer Funktion:
- function copyToClipboard(meintext) {
- if (window.clipboardData)
- window.clipboardData.setData("Text", meintext);
- else if (window.netscape) {
- netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
- var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
- if (!clip)
- return false;
- var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
- if (!trans)
- return false;
- trans.addDataFlavor('text/unicode');
- var str = new Object();
- var len = new Object();
- var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
- str.data=meintext;
- trans.setTransferData("text/unicode",str,meintext.length*2);
- var clipid=Components.interfaces.nsIClipboard;
- if (!clipid)
- return false;
- clip.setData(trans,null,clipid.kGlobalClipboard);
- }
- return false;
- }
Wohlgemerkt die ersten zwei Zeilen sind für den IE. Der Rest für Firefox.
Ach ja: Die Zwischenablage muss man erstmal unter about:config
die Property signed.applets.codebase_principal_support
auf
true
gesetzt werden.