2007-11-17

用 JavaScript 存取 Firefox 剪貼簿

Firefox 預設是不能用 JavaScript 存取系統剪貼簿(Clipboard)的, 如果想要開放這項功能, 要改 Fifefox 的設定才行。

  1. 先在網址列輸入 about:config。
  2. 然後找到 signed.applets.codebase_principal_support, 把它設為 true 就行了。
  3. 然後再把以下的 code 找個適當的地方放, 然後就可以呼叫 CopyToClipboard("your text....") 把字串複製到剪貼篿啦!

值得注意的是在每次呼叫的時候, Firefox 會彈出一個對話視窗詢問是否允許存取, 要按 "是" 才行!

secdialog

function CopyToClipboard(copytext)
{
	if (window.clipboardData)
	{
		window.clipboardData.setData('Text', copytext);
	}
	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;

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

		var str = Components.classes['@mozilla.org/supports-string;1'].createInstance(Components.interfaces.nsISupportsString);
		str.data=copytext;

		trans.addDataFlavor('text/unicode');
		trans.setTransferData('text/unicode',str,copytext.length*2);

		var clipid=Components.interfaces.nsIClipboard;
		if (!clipid) return false;

		clip.setData(trans,null,clipid.kGlobalClipboard);
	}
	else
	{
		return false;
	}
	return false;

}

沒有留言: