-
Notifications
You must be signed in to change notification settings - Fork 0
/
SimpleHybrid.js
125 lines (114 loc) · 4.18 KB
/
SimpleHybrid.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
119
120
121
122
123
124
125
var webData = {};
var appData = {};
document.addEventListener("DOMContentLoaded", function() {
shInit();
});
function shInit() {
//webData Sync
webData = localStorage.getItem("webData");
//appData Sync
if(SH.deviceType() == "AndroidApp") {
SHAndroid.init();
} else if(SH.deviceType() == "iOSApp") {
webkit.messageHanlders.SHiOSInit.postMessage();
//location.href = "SH://init";
}
}
function shInitCallBack(receiveAppData) {
appData = JSON.parse(receiveAppData);
}
//SH
var SH = {
data : {
removeWeb : function(name) {
webData[name].remove();
localStorage.setItem("webData", webData);
},
clearWeb : function() {
webData.clear();
localStorage.setItem("webData", webData);
},
web : function(name) {
return webData[name];
},
web : function(name, value) {
webData[name] = value;
localStorage.setItem("webData", webData);
},
removeApp : function(name) {
if(SH.deviceType() == "AndroidApp" || SH.deviceType() == "iOSApp") {
appData[name].remove();
if(SH.deviceType() == "AndroidApp") {
SHAndroid.appDataToApp(JSON.stringify(appData));
} else if(SH.deviceType() == "iOSApp") {
webkit.messageHanlders.appDataToApp.postMessage(JSON.stringify(appData));
}
} else {
console.log("This is not app, SH.app.remove() function is ignored")
}
},
clearApp : function() {
if(SH.deviceType() == "AndroidApp" || SH.deviceType() == "iOSApp") {
appData.clear();
if(SH.deviceType() == "AndroidApp") {
SHAndroid.appDataToApp(JSON.stringify(appData));
} else if(SH.deviceType() == "iOSApp") {
webkit.messageHanlders.appDataToApp.postMessage(JSON.stringify(appData));
}
} else {
console.log("This is not app, SH.app.clear() function is ignored");
}
},
app : function(name, value) {
if(SH.deviceType() == "AndroidApp" || SH.deviceType() == "iOSApp") {
if(value == undefined) {
return appData[name];
} else {
appData[name] = value;
if(SH.deviceType() == "AndroidApp") {
SHAndroid.appDataToApp(JSON.stringify(appData));
} else if(SH.deviceType() == "iOSApp") {
webkit.messageHanlders.appDataToApp.postMessage(JSON.stringify(appData));
}
}
} else {
console.log("This is not app, SH.app() function is ignored");
}
}
},
deviceType : function() {
var agent = navigator.userAgent.toLowerCase();
var type = "PCWeb";
var mobileWebTxts = [
"android","phone",
"iphone","ipad","ipod",
"blackberry",
"opera mini","opera mobi",
"windows ce","iemobile",
"nokia", "webos",
"sonyericsson",
];
if(agent.indexOf('simplehybrid') != -1){
if(agent.indexOf('android') != -1) {
type = "AndroidApp";
} else if((agent.indexOf('iphone') != -1) || (agent.indexOf('ipad') != -1) || (agent.indexOf('ipod') != -1)) {
type = "iOSApp";
}
} else {
if(agent.indexOf('android') != -1) {
return "AndroidWeb";
} else if((agent.indexOf('iphone') != -1) || (agent.indexOf('ipad') != -1) || (agent.indexOf('ipod') != -1)) {
return "iOSWeb";
} else {
for (var i = 0; i < mobileWebTxts.length; i++){
var result = agent.indexOf(mobileWebTxts[i]);
if(result != -1){
type ='MobileWeb';
break;
}
}
}
}
return type;
}
}