Repository navigation
Expand file tree
/
Copy pathbrMain.js
More file actions
66 lines (63 loc) · 1.95 KB
/
Copy pathbrMain.js
File metadata and controls
66 lines (63 loc) · 1.95 KB
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
62
63
64
65
66
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction || {READ_WRITE: "readwrite"};
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
async function setup() {
var dbev = window.indexedDB.open("sykle-data", 1);
dbev.onsuccess = (e)=>{
console.log(e);
};
//dir = window.showDirectoryPicker({mode:"readwrite"});
await setupNetwork();
}
function decodeObject(obj, ...args) {
if (Object.prototype != Object.getPrototypeOf(obj)) { return obj; }
var result = {};
for (let i of Object.keys(obj)) {
if ((obj[i] != undefined && obj[i] != null) && Object.prototype == Object.getPrototypeOf(obj)) {
result[i] = decodeObject(obj[i]);
} else {
result[i] = obj[i];
}
}
console.log(obj);
if (obj.protoName != undefined) {
try {
result = new window[obj.protoName](...args, result);
} catch(er) {
console.log(er);
}
}
return result;
}
window.addEventListener("message", (e) => {
if (e.source != frames[0]) {
return;
}
if (e.data === true) {
console.log("connect to iframe succeed.");
return;
}
if (e.data[0] == "event") {
e.data[1] = decodeObject(e.data[1], e.data[1].type);
var evclass = Event;
if ((e.data[1].protoName || "").endsWith("Event")) {
try {
evclass = window[e.data[1].protoName];
} catch {
;
}
}
var ev = e.data[1]; //new evclass(e.data[1].type, e.data[1]);
(document.getElementById("view-frame")).dispatchEvent(ev);
console.log(ev);
}
});
window.addEventListener("load", ()=>{
document.getElementById("view-frame").addEventListener("load", (e) => {
frames[0].postMessage({type:"connect"}, "*");
});
document.getElementById("view-frame").addEventListener("navigate", (e)=>{
console.log(e);
});
});
window.onload = setup;