111
This commit is contained in:
19
utils/appToWebview.js
Normal file
19
utils/appToWebview.js
Normal file
@@ -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 };
|
||||
267
utils/uni.webview.js
Normal file
267
utils/uni.webview.js
Normal file
@@ -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;
|
||||
});
|
||||
Reference in New Issue
Block a user