代码改变世界

guacamole的复制粘贴

2018-06-19 15:46  清风221  阅读(3050)  评论(3编辑  收藏  举报
一.发送中文或文本(针对开发环境,生产环境不需变动)
官方下载的完整版js缺失了一部分关于粘贴板的代码,调用setclipboard方法,将外部内容复制到粘贴板的时候,提示方法不存在.需要补齐这部分源码,才能复制功能
client.js中需要添加的代码:
 
/**
* Sets the clipboard of the remote client to the given text data.
*
* @deprecated Use createClipboardStream() instead.
* @param {String} data The data to send as the clipboard contents.
*/
this.setClipboard = function (data) {
// Do not send requests if not connected
if (!isConnected())
return;
// Open stream
var stream = guac_client.createClipboardStream("text/plain");
var writer = new Guacamole.StringWriter(stream);
// Send text chunks
for (var i = 0; i < data.length; i += 4096)
writer.sendText(data.substring(i, i + 4096));
// Close stream
writer.sendEnd();
};
 
复制在357行附近,this.createOutputStream 方法的上面,然后可以调用setclipboard方法
guac.setClipboard(val);
 
 
二.复制功能
将canvas内容选中的时候,会返回一个response,内容为4.blob.1.0是选择的canvas内容的base64位数据流,需要修改源码,Tunnel.js里面handleResponse方法,
添加一段代码,将数据流单独存储,
if (/4.blob,1.0/.test(xmlhttprequest.responseText)) {
GLOBAL.text = xmlhttprequest.responseText;
}