PDA

View Full Version : [javascript] e clipboard


gugoXX
09-02-2008, 16:31
Ho cercato in giro ma non sono molto soddifatto.
Lunedi' mi trovero' nella situazione di cosa consigliare ad un programmatore che dovra' sviluppare una minilibreria che ci permettera' di copiare via javascript alcune cose (testo per fortuna) direttamente nella clipboard.

Il tutto ovviamente come sempre deve funzionare sotto IE, Firefox, Opera, Safari e qualunque altro Browser che possa piacere al cliente.

Qualcuno ha esperienza in merito, senza doversi accartocciare con soluzioni che richiedano al cliente, per solo sta ca...ta, di installare qualcosa di strano o dover configurare il browser come se sapesse cosa vuol dire farlo?

wizard1993
09-02-2008, 22:22
ho trovato questo codice per ie
// Microsoft Internet Explorer only

// http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/clipboarddata.asp
// var x = 'Whatever you want on the clipboard';
// window.clipboardData.setData('Text',x);


per mozilla e ie ho trovato questo

<script language="javascript" type="text/javascript">
<!--
function copy_clip(meintext)
{

if (window.clipboardData)
{

// the IE-manier
window.clipboardData.setData("Text", meintext);

// waarschijnlijk niet de beste manier om Moz/NS te detecteren;
// het is mij echter onbekend vanaf welke versie dit precies werkt:
}
else if (window.netscape)
{

// dit is belangrijk maar staat nergens duidelijk vermeld:
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

// maak een interface naar het clipboard
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;

// maak een transferable
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;

// specificeer wat voor soort data we op willen halen; text in dit geval
trans.addDataFlavor('text/unicode');

// om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig om het in op te slaan
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);

}
alert("Following info was copied to your clipboard:\n\n" + meintext);
return false;
}
//-->
</script>

gugoXX
09-02-2008, 22:26
Per intanto grazie molte.
Mozilla purtroppo e' morto. Speriamo funzioni almeno su firefox.
__

Confuso. E' Netscape che e' morto, non Mozilla.

wizard1993
09-02-2008, 22:30
Per intanto grazie molte.
Mozilla purtroppo e' morto. Speriamo funzioni almeno su firefox.
__

Confuso. E' Netscape che e' morto, non Mozilla.

se non mi sbaglio la sintassi di firefox è compatibile con quella di mozilla, ora la provo, vedo che succede