Authored by ccbikai(👎🏻🍜)

跳转 App

... ... @@ -8,19 +8,32 @@
*
* 希望能与 微信 JS-SDK 一样方便
*/
var $ = require('yoho-jquery');
var tip = require('./plugin/tip');
/* 空方法 */
var emptyFn = function() {};
var emptyFn = function () { };
/* 提示信息 */
var tipInfo = '暂不支持,请在YOHO!BUY应用中打开';
var yoho = {
var qs = window.queryString;
var yoho, $appLink, $appButton;
$appLink = $('#yoho-app-link');
if (!$appLink.length) {
$('body').append('<a id="yoho-app-link" href="javascript:;" style="display:none !important;"><span></span></a>');
$appLink = $('#yoho-app-link');
}
$appButton = $appLink.find('span');
yoho = {
/**
* 判断是否是 APP
*/
isApp: /YohoBuy/i.test(navigator.userAgent || ''),
isApp: /YohoBuy/i.test(navigator.userAgent || '') || qs.app_version,
isiOS: /\(i[^;]+;( U;)? CPU.+Mac OS X/i.test(navigator.userAgent || ''),
isAndroid: /Android/i.test(navigator.userAgent || ''),
... ... @@ -29,7 +42,7 @@ var yoho = {
*/
data: window.yohoInterfaceData,
ready: function(callback) {
ready: function (callback) {
if (this.isApp) {
document.addEventListener('deviceready', callback);
} else {
... ... @@ -44,7 +57,7 @@ var yoho = {
* @param success 调用成功的回调方法
* @param fail 调用失败的回调方法
*/
invokeMethod: function(method, args, success, fail) {
invokeMethod: function (method, args, success, fail) {
var appInterface = window.yohoInterface;
if (this.isApp && appInterface) {
... ... @@ -62,15 +75,96 @@ var yoho = {
* @param name 方法名
* @param callback 回调
*/
addNativeMethod: function(name, callback) {
addNativeMethod: function (name, callback) {
var appInterface = window.yohoInterface;
// 延迟 500ms 注入
setTimeout(function() {
setTimeout(function () {
if (appInterface) {
appInterface[name] = callback;
}
}, 500);
},
parseUrl: function (url) {
var query = {},
hashs,
hash,
i;
url = (url || '').split('?');
hashs = url[1].split('&');
if (hashs && hashs.length) {
for (i = 0; i < hashs.length; i++) {
hash = hashs[i].split('=');
console.log(hashs[i])
query[hash[0]] = hash[1];
}
}
return {
path: url[0],
query: query
};
},
getUid: function () {
if (yoho.isApp) {
return qs.uid;
}
return window.gitUid();
},
goLogin: function (refer, data) {
var url;
url = 'http://m.yohobuy.com/signin.html?refer=' + encodeURIComponent(refer);
refer = yoho.parseUrl(refer || location.href);
if (yoho.isApp) {
url = url + '&openby:yohobuy=' + (data || JSON.stringify({
action: 'go.weblogin',
params: {
priority: 'N',
jumpurl: {
url: refer.path,
param: refer.query
}
}
}))
}
$appLink.attr('href', url);
$appButton.click();
return false;
},
goH5: function (link, data) {
var url = link;
if (!link) {
return;
}
link = yoho.parseUrl(link || location.href);
if (yoho.isApp) {
url = url + '&openby:yohobuy=' + (data || JSON.stringify({
action: 'go.h5',
params: {
islogin: 'N',
type: 0,
updateflag: Date.now() + '',
url: link.path,
param: link.query
}
}))
}
$appLink.attr('href', url);
$appButton.click();
return false;
}
};
... ...