UNPKG

@sinosun/lib

Version:

sinosun jsbridge and net toolkit

303 lines (239 loc) 8.21 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); require("core-js/modules/es.regexp.constructor.js"); require("core-js/modules/es.regexp.exec.js"); require("core-js/modules/es.regexp.to-string.js"); require("core-js/modules/es.string.match.js"); require("core-js/modules/es.string.search.js"); require("core-js/modules/es.string.split.js"); var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof")); var _setPrototypeOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/set-prototype-of")); var _create = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/create")); var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property")); var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise")); var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind")); var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify")); var __extends = void 0 && (void 0).__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = _setPrototypeOf["default"] || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __()); }; }(); var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; (0, _defineProperty["default"])(exports, "__esModule", { value: true }); /** * @author miaoju * @description 兆日浏览器的jsbridge实现类 */ var IJsBridge_1 = __importDefault(require("../IJsBridge")); var WebViewJavascriptBridge_1 = __importDefault(require("./WebViewJavascriptBridge")); var SnJsBridgeImpl = /** @class */ function (_super) { __extends(SnJsBridgeImpl, _super); function SnJsBridgeImpl() { return _super !== null && _super.apply(this, arguments) || this; } //通用JSBridgeReady事件 Promise 版, SnJsBridgeImpl.prototype.PromiseJSBridgeReady = function (callback) { // 如果 jsbridge 已经注入则直接调用 if (window.WebViewJavascriptBridge) { callback && callback(); } else { // 如果没有注入则监听注入的事件 document.addEventListener('SnJSBridgeReady', function () { callback && callback(); }, false); } }; /** * 调用native jsbridge接口 * @param {*} method 接口名称 * @param {*} data 参数对象 */ SnJsBridgeImpl.prototype.callHandler = function (method, data) { var _this = this; return new _promise["default"](function (resolve) { _this.PromiseJSBridgeReady(function () { WebViewJavascriptBridge_1["default"].callHandler(method, data, function (responseData) { try { if (responseData) { resolve(JSON.parse(responseData)); } } catch (e) { resolve(responseData); } }); }); }); }; /** * 注册app端提供的监听事件 * @param {*}} method * @param {*} callback */ SnJsBridgeImpl.prototype.registerHandler = function (method, callback) { this.PromiseJSBridgeReady(function () { return WebViewJavascriptBridge_1["default"].registerHandler(method, function (data) { callback(data); }); }); }; /** * 打开页面 * @param {*} url */ SnJsBridgeImpl.prototype.openPage = function (url) { window.open(url); }; /** * 注册title栏菜单 * @param {*} menuList */ SnJsBridgeImpl.prototype.registerMenu = function (menuList) { var _context; WebViewJavascriptBridge_1["default"].callHandler('RegisterMenuFunction', menuList); WebViewJavascriptBridge_1["default"].registerHandler('clickMenuCallBack', (0, _bind["default"])(_context = function _context(data) { var dataJson = data; if ((0, _typeof2["default"])(data) !== 'object') { dataJson = JSON.parse(data); } // 找出menuList中的与注册事件对应的函数并且执行 if (menuList) { //取对应的func执行 for (var i = 0; i < menuList.length; i++) { if (dataJson.menuId === menuList[i].menuId && menuList[i].func) { menuList[i].func(); break; } } } }).call(_context, this)); }; /** * 调用app回退事件 * @param {*} url * @param {*} backSteps * @param {*} loadData */ SnJsBridgeImpl.prototype.goBack = function (url, backSteps, loadData) { var data = { loadData: '', url: url }; if (backSteps) { data.backSteps = backSteps; } if (loadData) { data.loadData = loadData; } WebViewJavascriptBridge_1["default"].callHandler('goBackFunction', (0, _stringify["default"])(data)); }; //如果有参数则返回具体的某个key对应值,如果没有参数则返回url中的参数对象 SnJsBridgeImpl.prototype.getUrlParam = function (key, urlParams) { if (urlParams === void 0) { urlParams = {}; } if (key) { var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 var r = window.location.search.substr(1).match(reg); //匹配目标参数 if (r != null) return decodeURI(r[2]); return null; //返回参数值 } else { var regexP = /[^#&\?]+=[^#&\?]*/ig; var ms = window.location.href.match(regexP); if (ms) { for (var i = 0; i < ms.length; i++) { var arr = ms[i].split('='); try { arr[1] = decodeURI(decodeURIComponent(arr[1])); } catch (e) { arr[1] = decodeURIComponent(arr[1]); } urlParams[arr[0]] = arr[1]; } } return urlParams; } }; //小应用地址可以配置全,不用做任何处理 SnJsBridgeImpl.prototype.openAppRoute = function () {}; SnJsBridgeImpl.prototype.fileUploadFunction = function () { return new _promise["default"](function (res) { res({ ret: 'H5' }); }); }; //选择联系人 SnJsBridgeImpl.prototype.selectContact = function (data) { var selectType = data.selectType, selectId = data.selectId; var dataList = [{ key: "from_key", value: 9, type: "int" }, { key: "select_model", value: selectType + "", type: "string" }, { key: "selected_list_tpay", value: (0, _stringify["default"])(selectId), type: "string" }]; var selectJson = { action: "IntentAction_SelectContactWithOrgListActivity", dataList: dataList, responseKeyList: [{ key: "addusers_tpay", value: "", type: "string" }] }; return WebViewJavascriptBridge_1["default"].callHandler('OpenActionFunction', selectJson); }; //扫描二维码 SnJsBridgeImpl.prototype.scanQrcode = function () { var Json = { action: 'action_common_qrcode_scan', dataList: [{ key: 'userid', value: 'abc1', type: "string" }, { key: 'userid', value: 'abc2', type: "string" }, { key: 'userid', value: 'abc3', type: "string" }], responseKeyList: [{ key: 'qrcode', value: '', type: 'string' }] }; return WebViewJavascriptBridge_1["default"].callHandler('OpenActionFunction', Json); }; return SnJsBridgeImpl; }(IJsBridge_1["default"]); exports["default"] = SnJsBridgeImpl;