From 0d2ee2e2ca029bd6de64128f6d3cfcd67d5f8a80 Mon Sep 17 00:00:00 2001 From: guilinlan jin Date: Wed, 17 Jul 2024 15:32:00 +0800 Subject: [PATCH] 111 --- utils/appToWebview.js | 19 +++ utils/uni.webview.js | 267 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 286 insertions(+) create mode 100644 utils/appToWebview.js create mode 100644 utils/uni.webview.js diff --git a/utils/appToWebview.js b/utils/appToWebview.js new file mode 100644 index 0000000..5980872 --- /dev/null +++ b/utils/appToWebview.js @@ -0,0 +1,19 @@ +// appToWebview.js +// 发送信息之前,先要有 webviewGetMessage +function appSendMessage(_this, action, params) { + const self = _this; + self.currentWebview = self.$scope?.$getAppWebview()?.children()[0]; + //传递大量数据 + self.currentWebview?.evalJS(`${action}(${JSON.stringify(params)})`); +} + +function webviewGetMessage(action, callback) { + // #ifdef H5 + window[action] = (data) => { + let params = JSON.parse(JSON.stringify(data)); + callback(params); + }; + // #endif +} + +export { appSendMessage, webviewGetMessage }; diff --git a/utils/uni.webview.js b/utils/uni.webview.js new file mode 100644 index 0000000..5f74b0a --- /dev/null +++ b/utils/uni.webview.js @@ -0,0 +1,267 @@ +!(function (e, n) { + "object" == typeof exports && "undefined" != typeof module + ? (module.exports = n()) + : "function" == typeof define && define.amd + ? define(n) + : ((e = e || self).webUni = n()); +})(this, function () { + "use strict"; + try { + var e = {}; + Object.defineProperty(e, "passive", { + get: function () { + !0; + }, + }), + window.addEventListener("test-passive", null, e); + } catch (e) {} + var n = Object.prototype.hasOwnProperty; + + function t(e, t) { + return n.call(e, t); + } + var i = [], + a = function (e, n) { + var t = { + options: { + timestamp: +new Date(), + }, + name: e, + arg: n, + }; + if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) { + if ("postMessage" === e) { + var a = { + data: [n], + }; + return window.__dcloud_weex_postMessage + ? window.__dcloud_weex_postMessage(a) + : window.__dcloud_weex_.postMessage(JSON.stringify(a)); + } + var o = { + type: "WEB_INVOKE_APPSERVICE", + args: { + data: t, + webviewIds: i, + }, + }; + window.__dcloud_weex_postMessage + ? window.__dcloud_weex_postMessageToService(o) + : window.__dcloud_weex_.postMessageToService(JSON.stringify(o)); + } + if (!window.plus) + return window.parent.postMessage( + { + type: "WEB_INVOKE_APPSERVICE", + data: t, + pageId: "", + }, + "*" + ); + if (0 === i.length) { + var r = plus.webview.currentWebview(); + if (!r) throw new Error("plus.webview.currentWebview() is undefined"); + var d = r.parent(), + s = ""; + (s = d ? d.id : r.id), i.push(s); + } + if (plus.webview.getWebviewById("__uniapp__service")) + plus.webview.postMessageToUniNView( + { + type: "WEB_INVOKE_APPSERVICE", + args: { + data: t, + webviewIds: i, + }, + }, + "__uniapp__service" + ); + else { + var w = JSON.stringify(t); + plus.webview + .getLaunchWebview() + .evalJS( + 'UniPlusBridge.subscribeHandler("' + .concat("WEB_INVOKE_APPSERVICE", '",') + .concat(w, ",") + .concat(JSON.stringify(i), ");") + ); + } + }, + o = { + navigateTo: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + a("navigateTo", { + url: encodeURI(n), + }); + }, + navigateBack: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.delta; + a("navigateBack", { + delta: parseInt(n) || 1, + }); + }, + switchTab: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + a("switchTab", { + url: encodeURI(n), + }); + }, + reLaunch: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + a("reLaunch", { + url: encodeURI(n), + }); + }, + redirectTo: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + n = e.url; + a("redirectTo", { + url: encodeURI(n), + }); + }, + getEnv: function (e) { + window.plus + ? e({ + plus: !0, + }) + : e({ + h5: !0, + }); + }, + postMessage: function () { + var e = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + a("postMessage", e.data || {}); + }, + }, + r = /uni-app/i.test(navigator.userAgent), + d = /Html5Plus/i.test(navigator.userAgent), + s = /complete|loaded|interactive/; + var w = window.my && navigator.userAgent.indexOf("AlipayClient") > -1; + var u = + window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); + var c = + window.qq && + window.qq.miniProgram && + /QQ/i.test(navigator.userAgent) && + /miniProgram/i.test(navigator.userAgent); + var g = + window.tt && + window.tt.miniProgram && + /toutiaomicroapp/i.test(navigator.userAgent); + var v = + window.wx && + window.wx.miniProgram && + /micromessenger/i.test(navigator.userAgent) && + /miniProgram/i.test(navigator.userAgent); + var p = window.qa && /quickapp/i.test(navigator.userAgent); + for ( + var l, + _ = function () { + (window.UniAppJSBridge = !0), + document.dispatchEvent( + new CustomEvent("UniAppJSBridgeReady", { + bubbles: !0, + cancelable: !0, + }) + ); + }, + f = [ + function (e) { + if (r || d) + return ( + window.__dcloud_weex_postMessage || window.__dcloud_weex_ + ? document.addEventListener("DOMContentLoaded", e) + : window.plus && s.test(document.readyState) + ? setTimeout(e, 0) + : document.addEventListener("plusready", e), + o + ); + }, + function (e) { + if (v) + return ( + window.WeixinJSBridge && window.WeixinJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("WeixinJSBridgeReady", e), + window.wx.miniProgram + ); + }, + function (e) { + if (c) + return ( + window.QQJSBridge && window.QQJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("QQJSBridgeReady", e), + window.qq.miniProgram + ); + }, + function (e) { + if (w) { + document.addEventListener("DOMContentLoaded", e); + var n = window.my; + return { + navigateTo: n.navigateTo, + navigateBack: n.navigateBack, + switchTab: n.switchTab, + reLaunch: n.reLaunch, + redirectTo: n.redirectTo, + postMessage: n.postMessage, + getEnv: n.getEnv, + }; + } + }, + function (e) { + if (u) + return ( + document.addEventListener("DOMContentLoaded", e), + window.swan.webView + ); + }, + function (e) { + if (g) + return ( + document.addEventListener("DOMContentLoaded", e), + window.tt.miniProgram + ); + }, + function (e) { + if (p) { + window.QaJSBridge && window.QaJSBridge.invoke + ? setTimeout(e, 0) + : document.addEventListener("QaJSBridgeReady", e); + var n = window.qa; + return { + navigateTo: n.navigateTo, + navigateBack: n.navigateBack, + switchTab: n.switchTab, + reLaunch: n.reLaunch, + redirectTo: n.redirectTo, + postMessage: n.postMessage, + getEnv: n.getEnv, + }; + } + }, + function (e) { + return document.addEventListener("DOMContentLoaded", e), o; + }, + ], + m = 0; + m < f.length && !(l = f[m](_)); + m++ + ); + l || (l = {}); + var E = "undefined" != typeof webUni ? webUni : {}; + if (!E.navigateTo) for (var b in l) t(l, b) && (E[b] = l[b]); + return (E.webView = l), E; +});