Skip to content

Instantly share code, notes, and snippets.

@magmoro
Created February 21, 2009 15:13
Show Gist options
  • Save magmoro/68063 to your computer and use it in GitHub Desktop.
Save magmoro/68063 to your computer and use it in GitHub Desktop.
function getClipboard() {
if (window.clipboardData) {
// the IE-manier
return(window.clipboardData.getData('Text'));
// 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');
// haal de data op
clip.getData(trans,clip.kGlobalClipboard);
// 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();
// haal de data en datalengte op in de nieuwe objecten; hier vang ik errors op als type-conversion niet lukt
try { trans.getTransferData('text/unicode',str,len); }
catch(error) { return; }
// Als het data object iets bevat converteer het naar een string object
if (str) {
// deze werkte bij mij alleen in NS7
if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
// en deze alleen in Mozilla 1.2
else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
else str = null;
}
// haal de text op uit het data segment; de lengte is de helft van de lengte zoals opgehaald uit de transferable
if (str) return(str.data.substring(0,len.value / 2));
}
return;
}
// bovenstaande functie gebruiken:
var sText = getClipboard();
alert(sText);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment