wanmeiyizhan/pages/thirdParty/wanmeiyizhan.js
2025-01-15 18:39:05 +08:00

364 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

! 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
};
})();