// Read and write JS scripts on clipboard in Firefox
/*************************************** ***********
Http://www.krikkit.net/howto_javascript_copy_clipboard.html
Copy the string maintext to the clipboard.
**************************************** **********/
Function setclipboard (maintext ){
If (window. clipboardData ){
Return (window. clipboardData. setdata ("text", maintext ));
}
Else if (window. Netscape ){
Netscape. Security. privilegemanager. enableprivilege ('universalxpconnect ');
VaR clip = components. classes ['@ mozilla.org/widget/clipboard=1'mirror.createinstance (components. Interfaces. nsiclipboard );
If (! Clip) return;
VaR trans = components. classes ['@ mozilla.org/widget/transferable00001').createinstance (components. Interfaces. nsitransferable );
If (! Trans) return;
Trans. adddataflavor ('text/Unicode ');
VaR STR = new object ();
VaR Len = new object ();
VaR STR = components. classes ["@ mozilla.org/supports-string1_1"]. createinstance (components. Interfaces. nsisupportsstring );
VaR copytext = maintext;
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 );
Return true;
}
Return false;
}
/*************************************** ***********
Http://www.codebase.nl/index.php/command/viewcode/id/174
Returns the content of the clipboard.
**************************************** **********/
Function getclipboard (){
If (window. clipboardData ){
Return (window. clipboardData. getdata ('text '));
}
Else if (window. Netscape ){
Netscape. Security. privilegemanager. enableprivilege ('universalxpconnect ');
VaR clip = components. classes ['@ mozilla.org/widget/clipboard=1'mirror.createinstance (components. Interfaces. nsiclipboard );
If (! Clip) return;
VaR trans = components. classes ['@ mozilla.org/widget/transferable00001').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 NULL;
}
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 ){
Return (Str. Data. substring (0, Len. Value/2 ));
}
}
Return NULL;
}