-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathclipboard.js
61 lines (54 loc) · 1.58 KB
/
clipboard.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
_CTSUI.Clipboard = function(server) {
this._key = "cts-clipboard";
this._server = server;
if (typeof server == "undefined") {
this._server = CTS.UI.URLs.Services.clipboard;
}
this._deferred = CTS.$.Deferred();
this._serverWindow = null;
var self = this;
window.addEventListener("message", function(e) { self.onLoad(e) }, false);
this.addIframe();
};
_CTSUI.Clipboard.prototype.addIframe = function() {
this._iframe = CTS.$("<iframe class='cts-ignore cts-ui' src='" + this._server + "'></iframe>");
this._iframe.hide();
CTS.$('body').append(this._iframe);
};
_CTSUI.Clipboard.prototype.onLoad = function(evt) {
if (evt.source == this._iframe.get(0).contentWindow) {
window.removeEventListener("message", this._onLoad);
this._serverWindow = evt.source;
this._deferred.resolve();
}
};
_CTSUI.Clipboard.prototype.copy = function(text) {
var self = this;
this._deferred.done(function() {
self._serverWindow.postMessage({
cmd: "set",
name: self._key,
value: text,
days: 7}, "*");
});
};
_CTSUI.Clipboard.prototype.paste = function(callback) {
var self = this;
var returnData = function(evt) {
if (typeof(evt) != "undefined") {
if (evt.source == self._serverWindow) {
window.removeEventListener("message", returnData);
if (typeof callback != "undefined") {
callback(evt.data);
}
}
}
};
this._deferred.done(function() {
window.addEventListener("message", returnData, false);
self._serverWindow.postMessage({
cmd: "get",
name: self._key}, "*"
);
});
};