h5和客戶端通信

/*

* *****xia

*/

let pace = module.exports = exports = {};

let DEVICE_TYPE = getDeviceType();

let PaceBridge = null;

let URL_BASE = 'http://pacehirunact.sparta.html5.qq.com'

pace.checkUrl = function (url, on_succ, on_fail) {

? ? url = getOriginUrl(url);

? ? if (!getBridge()) {

? ? ? ? url += url.indexOf('?') >= 0 ? '&' : '?';

? ? ? ? url += 'uin=MTEwOTI1&sign=b6b7aef83e9d7f3ae4eaade429383f23&pass_ticket=0dc18f27c9a2472112d0eb38e683b374';

? ? ? ? on_succ && on_succ(url);

? ? ? ? return;

? ? }

? ? if (DEVICE_TYPE === 'ios') {

? ? ? ? try {

? ? ? ? ? ? PaceBridge.postMessage({

? ? ? ? ? ? ? ? method: 'checkUrl',

? ? ? ? ? ? ? ? arguments: arguments,

? ? ? ? ? ? ? ? url: url,

? ? ? ? ? ? ? ? on_succ: on_succ,

? ? ? ? ? ? ? ? on_fail: on_fail || ((err) => console.error('checkUrl fail. err:', err)),

? ? ? ? ? ? });

? ? ? ? } catch (err) {

? ? ? ? ? ? console.log(err);

? ? ? ? }

? ? } else {

? ? ? ? PaceBridge.checkUrl(url, on_succ, on_fail);

? ? }

};

pace.openMapApp = function (param) {

? ? if (!getBridge()) {

? ? ? ? console.log('cannot open map app');

? ? ? ? return;

? ? }

? ? if (DEVICE_TYPE === 'ios') {

? ? ? ? PaceBridge.postMessage({

? ? ? ? ? ? method: 'openMapApp',

? ? ? ? ? ? arguments: arguments,

? ? ? ? ? ? param: param,

? ? ? ? });

? ? } else {

? ? ? ? PaceBridge.openMapApp(JSON.stringify(param));

? ? }

};

pace.back = function () {

? ? if (!getBridge()) {

? ? ? ? window.history && window.history.back && window.history.back();

? ? ? ? return;

? ? }

? ? if (DEVICE_TYPE === 'ios') {

? ? ? ? PaceBridge.postMessage({

? ? ? ? ? ? method: 'back',

? ? ? ? ? ? arguments: arguments,

? ? ? ? });

? ? } else {

? ? ? ? PaceBridge.back();

? ? }

};

pace.openSetPhone = function () {

? ? if (!getBridge()) {

? ? ? ? console.error('open set phone page fail');

? ? ? ? return;

? ? }

? ? if (DEVICE_TYPE === 'ios') {

? ? ? ? PaceBridge.postMessage({

? ? ? ? ? ? method: 'openSetPhone',

? ? ? ? ? ? arguments: arguments,

? ? ? ? });

? ? } else {

? ? ? ? PaceBridge.openSetPhone();

? ? }

};

pace.shareWx = function (param) {

? ? if (!getBridge()) {

? ? ? ? console.log('cannot share to wechat');

? ? ? ? return;

? ? }

? ? if (DEVICE_TYPE === 'ios') {

? ? ? ? PaceBridge.postMessage({

? ? ? ? ? ? method: 'shareWx',

? ? ? ? ? ? arguments: arguments,

? ? ? ? ? ? param: param,

? ? ? ? });

? ? } else {

? ? ? ? PaceBridge.shareWx(JSON.stringify(param));

? ? }

};

function getOriginUrl(url) {

? ? if (url[0] !== '/')

? ? ? ? return url;

? ? getOriginUrl.cache = getOriginUrl.cache || {};

? ? return getOriginUrl.cache[url] = getOriginUrl.cache[url] || URL_BASE + url;

}

function getBridge() {

? ? if (!PaceBridge) {

? ? ? ? if (DEVICE_TYPE === 'ios')

? ? ? ? ? ? PaceBridge = window.webkit.messageHandlers.PaceBridge;

? ? ? ? else

? ? ? ? ? ? PaceBridge = window.PaceBridge;

? ? }

? ? return PaceBridge;

}

function getBrowser() {

? ? return {

? ? ? ? versions: function () {

? ? ? ? ? ? var u = navigator.userAgent,

? ? ? ? ? ? ? ? app = navigator.appVersion;

? ? ? ? ? ? return { // 移動終端瀏覽器版本信息

? ? ? ? ? ? ? ? trident: u.indexOf('Trident') > -1, // IE內(nèi)核

? ? ? ? ? ? ? ? presto: u.indexOf('Presto') > -1, // opera內(nèi)核

? ? ? ? ? ? ? ? webKit: u.indexOf('AppleWebKit') > -1, // 蘋果净刮、谷歌內(nèi)核

? ? ? ? ? ? ? ? gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, // 火狐內(nèi)核

? ? ? ? ? ? ? ? mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否為移動終端

? ? ? ? ? ? ? ? ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios終端

? ? ? ? ? ? ? ? android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android終端或uc瀏覽器

? ? ? ? ? ? ? ? iPhone: u.indexOf('iPhone') > -1, // 是否為iPhone或者QQHD瀏覽器

? ? ? ? ? ? ? ? iPad: u.indexOf('iPad') > -1, // 是否iPad

? ? ? ? ? ? ? ? webApp: u.indexOf('Safari') == -1, // 是否web應(yīng)該程序扛邑,沒有頭部與底部

? ? ? ? ? ? ? ? weixin: u.match(/MicroMessenger/i) == "micromessenger" || window.WeixinJSBridge != undefined

? ? ? ? ? ? };

? ? ? ? }(),

? ? ? ? language: (navigator.browserLanguage || navigator.language).toLowerCase()

? ? };

}

function getDeviceType() {

? ? var result = '';

? ? var browser = getBrowser();

? ? if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {

? ? ? ? result = 'ios';

? ? ? ? console.log(result);

? ? ? ? return result;

? ? } else if (browser.versions.android) {

? ? ? ? result = 'android';

? ? ? ? console.log(result);

? ? ? ? return result;

? ? } else {

? ? ? ? console.log(result);

? ? ? ? return result;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末席纽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卧斟,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件螃壤,死亡現(xiàn)場離奇詭異阅畴,居然都是意外死亡倡怎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門贱枣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來监署,“玉大人,你說我怎么就攤上這事纽哥∧品Γ” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵春塌,是天一觀的道長晓避。 經(jīng)常有香客問我簇捍,道長,這世上最難降的妖魔是什么俏拱? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任暑塑,我火速辦了婚禮,結(jié)果婚禮上锅必,老公的妹妹穿的比我還像新娘事格。我一直安慰自己,他們只是感情好搞隐,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布驹愚。 她就那樣靜靜地躺著,像睡著了一般劣纲。 火紅的嫁衣襯著肌膚如雪么鹤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天味廊,我揣著相機與錄音蒸甜,去河邊找鬼。 笑死余佛,一個胖子當(dāng)著我的面吹牛柠新,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辉巡,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼恨憎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了郊楣?” 一聲冷哼從身側(cè)響起憔恳,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎净蚤,沒想到半個月后钥组,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡今瀑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年程梦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橘荠。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡屿附,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哥童,到底是詐尸還是另有隱情挺份,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布贮懈,位于F島的核電站匀泊,受9級特大地震影響影暴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜探赫,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一型宙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伦吠,春花似錦妆兑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箱靴,卻和暖如春腺逛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衡怀。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工棍矛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抛杨。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓够委,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怖现。 傳聞我的和親對象是個殘疾皇子茁帽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容