364 lines
14 KiB
JavaScript
364 lines
14 KiB
JavaScript
! function (e, n) {
|
||
"object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (e = e || self).uni = 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 i(e, i) {
|
||
return n.call(e, i)
|
||
}
|
||
var t = [];
|
||
|
||
function o() {
|
||
return window.__dcloud_weex_postMessage || window.__dcloud_weex_
|
||
}
|
||
|
||
function a() {
|
||
return window.__uniapp_x_postMessage || window.__uniapp_x_
|
||
}
|
||
var r = function (e, n) {
|
||
var i = {
|
||
options: {
|
||
timestamp: +new Date
|
||
},
|
||
name: e,
|
||
arg: n
|
||
};
|
||
if (a()) {
|
||
if ("postMessage" === e) {
|
||
var r = {
|
||
data: n
|
||
};
|
||
return window.__uniapp_x_postMessage ? window.__uniapp_x_postMessage(r) : window.__uniapp_x_.postMessage(JSON.stringify(r))
|
||
}
|
||
var d = {
|
||
type: "WEB_INVOKE_APPSERVICE",
|
||
args: {
|
||
data: i,
|
||
webviewIds: t
|
||
}
|
||
};
|
||
window.__uniapp_x_postMessage ? window.__uniapp_x_postMessageToService(d) : window.__uniapp_x_.postMessageToService(JSON.stringify(d))
|
||
} else if (o()) {
|
||
if ("postMessage" === e) {
|
||
var s = {
|
||
data: [n]
|
||
};
|
||
return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(s) : window.__dcloud_weex_.postMessage(JSON.stringify(s))
|
||
}
|
||
var w = {
|
||
type: "WEB_INVOKE_APPSERVICE",
|
||
args: {
|
||
data: i,
|
||
webviewIds: t
|
||
}
|
||
};
|
||
window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(w) : window.__dcloud_weex_.postMessageToService(JSON.stringify(w))
|
||
} else {
|
||
if (!window.plus) return window.parent.postMessage({
|
||
type: "WEB_INVOKE_APPSERVICE",
|
||
data: i,
|
||
pageId: ""
|
||
}, "*");
|
||
if (0 === t.length) {
|
||
var u = plus.webview.currentWebview();
|
||
if (!u) throw new Error("plus.webview.currentWebview() is undefined");
|
||
var g = u.parent(),
|
||
v = "";
|
||
v = g ? g.id : u.id, t.push(v)
|
||
}
|
||
if (plus.webview.getWebviewById("__uniapp__service")) plus.webview.postMessageToUniNView({
|
||
type: "WEB_INVOKE_APPSERVICE",
|
||
args: {
|
||
data: i,
|
||
webviewIds: t
|
||
}
|
||
}, "__uniapp__service");
|
||
else {
|
||
var c = JSON.stringify(i);
|
||
plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE", '",').concat(c, ",").concat(JSON.stringify(t), ");"))
|
||
}
|
||
}
|
||
},
|
||
d = {
|
||
navigateTo: function () {
|
||
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
|
||
n = e.url;
|
||
r("navigateTo", {
|
||
url: encodeURI(n)
|
||
})
|
||
},
|
||
navigateBack: function () {
|
||
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
|
||
n = e.delta;
|
||
r("navigateBack", {
|
||
delta: parseInt(n) || 1
|
||
})
|
||
},
|
||
switchTab: function () {
|
||
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
|
||
n = e.url;
|
||
r("switchTab", {
|
||
url: encodeURI(n)
|
||
})
|
||
},
|
||
reLaunch: function () {
|
||
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
|
||
n = e.url;
|
||
r("reLaunch", {
|
||
url: encodeURI(n)
|
||
})
|
||
},
|
||
redirectTo: function () {
|
||
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
|
||
n = e.url;
|
||
r("redirectTo", {
|
||
url: encodeURI(n)
|
||
})
|
||
},
|
||
getEnv: function (e) {
|
||
a() ? e({
|
||
uvue: !0
|
||
}) : o() ? e({
|
||
nvue: !0
|
||
}) : window.plus ? e({
|
||
plus: !0
|
||
}) : e({
|
||
h5: !0
|
||
})
|
||
},
|
||
postMessage: function () {
|
||
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
|
||
r("postMessage", e.data || {})
|
||
}
|
||
},
|
||
s = /uni-app/i.test(navigator.userAgent),
|
||
w = /Html5Plus/i.test(navigator.userAgent),
|
||
u = /complete|loaded|interactive/;
|
||
var g = window.my && navigator.userAgent.indexOf(["t", "n", "e", "i", "l", "C", "y", "a", "p", "i", "l", "A"].reverse().join("")) > -1;
|
||
var v = 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 p = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent);
|
||
var _ = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);
|
||
var m = window.qa && /quickapp/i.test(navigator.userAgent);
|
||
var f = window.ks && window.ks.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);
|
||
var l = window.tt && window.tt.miniProgram && /Lark|Feishu/i.test(navigator.userAgent);
|
||
var E = window.jd && window.jd.miniProgram && /jdmp/i.test(navigator.userAgent);
|
||
var x = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent);
|
||
for (var S, h = function () {
|
||
window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", {
|
||
bubbles: !0,
|
||
cancelable: !0
|
||
}))
|
||
}, y = [function (e) {
|
||
if (s || w) return window.__uniapp_x_postMessage || window.__uniapp_x_ || window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && u.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), d
|
||
}, function (e) {
|
||
if (_) 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 (g) {
|
||
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 (v) return document.addEventListener("DOMContentLoaded", e), window.swan.webView
|
||
}, function (e) {
|
||
if (p) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram
|
||
}, function (e) {
|
||
if (m) {
|
||
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) {
|
||
if (f) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.ks.miniProgram
|
||
}, function (e) {
|
||
if (l) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram
|
||
}, function (e) {
|
||
if (E) return window.JDJSBridgeReady && window.JDJSBridgeReady.invoke ? setTimeout(e, 0) : document.addEventListener("JDJSBridgeReady", e), window.jd.miniProgram
|
||
}, function (e) {
|
||
if (x) return window.xhs.miniProgram
|
||
}, function (e) {
|
||
return document.addEventListener("DOMContentLoaded", e), d
|
||
}], M = 0; M < y.length && !(S = y[M](h)); M++);
|
||
S || (S = {});
|
||
var P = "undefined" != typeof uni ? uni : {};
|
||
if (!P.navigateTo)
|
||
for (var b in S) i(S, b) && (P[b] = S[b]);
|
||
return P.webView = S, P
|
||
}));
|
||
|
||
(function () {
|
||
// 所有代码包装在此 IIFE 中,确保局部作用域不会污染全局
|
||
var nowType = "";
|
||
var allRes = {
|
||
loginType: ""
|
||
};
|
||
var listeners = [];
|
||
var proxyRes = new Proxy(allRes, {
|
||
set(target, prop, value) {
|
||
target[prop] = value; // 更新 target[prop] 的值
|
||
notifyChange(target); // 触发回调
|
||
return true; // 返回 true,表示设置操作成功
|
||
},
|
||
get(target, prop) {
|
||
// 打印目标对象的属性
|
||
console.log('Getting property:', prop, 'Value:', target[prop]);
|
||
return target[prop];
|
||
}
|
||
});
|
||
|
||
// 确保 hashchange 监听只被绑定一次
|
||
if (!window.hashChangeListenerBound) {
|
||
window.addEventListener('hashchange', function () {
|
||
let str = window.location.hash.replace('#', "");
|
||
console.log('str', str);
|
||
let res = decodeURIComponent(str);
|
||
console.log('res', res);
|
||
if (res) {
|
||
res = JSON.parse(res);
|
||
console.log('res', typeof res);
|
||
console.log('Hash 值已改变:', res);
|
||
|
||
for (let key in res) {
|
||
console.log('res[key]', res[key]);
|
||
proxyRes[key] = res[key]; // 使用 Proxy 更新
|
||
}
|
||
}
|
||
});
|
||
|
||
// 设置标志,防止重复绑定
|
||
window.hashChangeListenerBound = true;
|
||
}
|
||
|
||
// 监听 allRes 变化的回调函数
|
||
function notifyChange(newRes) {
|
||
listeners.forEach(listener => listener(newRes));
|
||
}
|
||
|
||
// 获取位置
|
||
function handleGetPosition() {
|
||
nowType = 'position';
|
||
return new Promise((resolve, reject) => {
|
||
try {
|
||
uni.webView.postMessage({
|
||
data: {
|
||
action: 'position'
|
||
}
|
||
});
|
||
|
||
listeners.push((updatedRes) => {
|
||
setTimeout(() => {
|
||
resolve(updatedRes.position); // 将更新后的 allRes 传递给 .then() 的回调
|
||
});
|
||
});
|
||
} catch (error) {
|
||
reject(error); // 捕获并返回错误
|
||
}
|
||
});
|
||
}
|
||
|
||
// 扫码
|
||
function handleScanCode() {
|
||
nowType = 'scanCode';
|
||
return new Promise((resolve, reject) => {
|
||
try {
|
||
uni.webView.postMessage({
|
||
data: {
|
||
action: 'scanCode'
|
||
}
|
||
});
|
||
|
||
listeners.push((updatedRes) => {
|
||
setTimeout(() => {
|
||
console.log('updatedRes.scanCode1', updatedRes);
|
||
console.log('updatedRes.scanCode2', updatedRes.scanCode);
|
||
resolve(updatedRes.scanCode); // 将更新后的 allRes 传递给 .then() 的回调
|
||
});
|
||
});
|
||
} catch (error) {
|
||
console.error('Error in handleScanCode:', error);
|
||
reject(error); // 捕获并返回错误
|
||
}
|
||
});
|
||
}
|
||
|
||
// 第三方导航
|
||
function handleOpenLocation(data) {
|
||
nowType = 'openLocation';
|
||
try {
|
||
uni.webView.postMessage({
|
||
data: {
|
||
action: 'openLocation',
|
||
res: data
|
||
}
|
||
});
|
||
} catch (error) {
|
||
console.error('Error in handleOpenLocation:', error);
|
||
}
|
||
}
|
||
|
||
// 打开新页面
|
||
function handleOpenNewPage(data) {
|
||
nowType = 'openNewPage';
|
||
try {
|
||
uni.webView.postMessage({
|
||
data: {
|
||
action: 'openNewPage',
|
||
res: data
|
||
}
|
||
});
|
||
} catch (error) {
|
||
console.error('Error in handleOpenNewPage:', error);
|
||
}
|
||
}
|
||
|
||
// 返回上一页面
|
||
function handleBackPage() {
|
||
nowType = 'backPage';
|
||
try {
|
||
uni.webView.postMessage({
|
||
data: {
|
||
action: 'backPage',
|
||
}
|
||
});
|
||
} catch (error) {
|
||
console.error('Error in handleBackPage:', error);
|
||
}
|
||
}
|
||
|
||
// 将功能暴露到外部,避免污染全局
|
||
wmyz_app = {
|
||
handleGetPosition,
|
||
handleScanCode,
|
||
handleOpenLocation,
|
||
handleOpenNewPage,
|
||
handleBackPage
|
||
};
|
||
})(); |