console
(function(Hybrid) {
function getUrl(options) {
var url = 'hybrid://' + options.name;
var flag = '?';
var paras = options.paras;
if (paras && typeof paras == 'object') {
url += flag + 'paras=' + JSON.stringify(paras);
flag = '&';
}
if (options.callback) {
url += flag + options.callback;
flag = '&';
}
return url;
}
function sendUrl(options) {
var url = getUrl(options);
var iframe = document.createElement('iframe');
iframe.src = url;
iframe.style.display = 'none';
document.body.appendChild(iframe);
setTimeout(function() {
iframe.remove();
iframe = null;
},
1000);
}
function requestHybrid(options) {
if (!options.name) {
throw new Error('请传入名字');
}
if (options.callback) {
var t = options.callback(),
uuid = generateUUID();
options.callback = uuid;
Hybrid[uuid] = t;
}
sendUrl(options);
}
requestHybrid({
name: 'example',
paras: {
name: 'Saber'
},
callback: function() {
console.log('callback');
}
});
function generateUUID() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r: (r & 0x3 | 0x8)).toString(16);
});
return uuid;
};
} (window.Hybrid = {}));
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>
Document
</title>
</head>
<body>
</body>
</html>