-
Notifications
You must be signed in to change notification settings - Fork 3
/
xjsx-router.js
118 lines (89 loc) · 3.68 KB
/
xjsx-router.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
(function() {
var __core__ = XJSX.__XJSXCORE__();
var FUNCTION = 0xC;
let routeritem = [];
/** print √ **/
__core__.createModule([
{
keyword: "xjsx-router",
onload:function(arg,node){
let router;
[this.global.router = router = arg]
},
onprogress:function(arg,node){
},
callback: function(e, node, exec) {
try {
routeritem.push({routes:this.global.router.split("'").join('').split('"').join("").split("`").join("").trim(),dom: this.dom()})
var oldhash = location.hash === ''? '/': '/'+location.hash;
let self = this;
let oldrouter = routeritem.filter((e)=>{
if(e.routes=== oldhash ){
return e;
}
})
let errorrouter = function (rout){
return routeritem.filter((e)=>{
if(rout !== "" && e.routes === '' || e.routes === '*'){
return e;
}
})
}
if(oldrouter.length === 0 && errorrouter(oldhash).length === 0){
this.putChild('')
}else if(oldrouter.length === 0 && errorrouter(oldhash).length > 0){
errorrouter(oldhash).map((e)=>{
var doc = document.createDocumentFragment();
e.dom.map(d => {
doc.append(d)
})
self.putChild(doc)
})
}
else{
oldrouter.map((e)=>{
var doc = document.createDocumentFragment();
e.dom.map(d => {
doc.append(d)
})
self.putChild(doc)
})
}
window.onhashchange = function(s){
let newRout = s.newURL.split('').indexOf("#") === -1?'/': '/'+s.newURL.split('').splice(s.newURL.split('').indexOf('#'),s.newURL.split('').length - 2).join('');
let newRouter = routeritem.filter((e)=>{
if(e.routes === newRout){
return e;
}else{
}
})
if(newRouter.length === 0 && errorrouter(newRout).length === 0){
self.putChild('')
}else if(newRouter.length === 0 && errorrouter(newRout).length > 0){
errorrouter(newRout).map((e)=>{
var doc = document.createDocumentFragment();
e.dom.map(d=>{
doc.append(d)
})
self.putChild(doc)
})
}
else{
newRouter.map((e)=>{
var doc = document.createDocumentFragment();
e.dom.map(d => {
doc.append(d)
})
self.putChild(doc)
})
}
}
} catch (err) {
console.error("router:", e, err + "");
e = "";
}
},
type: FUNCTION,
},
]);
})()