早睡早起,方能养生
Sleep early rise early, way to keep healthy

uniapp 微信小程序webview中传递数据和h5直接跳转小程序页面

super
2024-04-09 14:55
views 975

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script type="text/javascript" src="uni.webview.js"></script>
<script>
document.addEventListener('UniAppJSBridgeReady', function() {
	// 跳转
	webUni.reLaunch({
		url: '/pages/index/index'
	})
	// 发消息
	webUni.postMessage({
		data: {
			action: "666", // 这是传的参数
		},
	});
});

// 获取传的参数
let url = new URL(window.location.href);
// 使用URLSearchParams来获取参数
let params = new URLSearchParams(url.search);
// 获取特定的参数
let a = params.get('a'); // 返回 '22231'
let b = params.get('b'); // 返回 '213123'
</script>

 

uniapp

 

<web-view src="http://127.0.0.1/h5.html?a=22231&b=213123" @message="handleMessage"></web-view>  

methods: {
	handleMessage(evt) {  
		console.log('接收到的消息:' + JSON.stringify(evt.detail.data));  
	}
}

 

uni.webview.js

 

!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 i(e, i) {
        return n.call(e, i)
    }

    var t = [];

    function o() {
        return window.__dcloud_weex_postMessage || window.__dcloud_weex_
    }

    var r = function (e, n) {
            var i = {options: {timestamp: +new Date}, name: e, arg: n};
            if (o()) {
                if ("postMessage" === e) {
                    var r = {data: [n]};
                    return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(r) : window.__dcloud_weex_.postMessage(JSON.stringify(r))
                }
                var a = {type: "WEB_INVOKE_APPSERVICE", args: {data: i, webviewIds: t}};
                window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(a) : window.__dcloud_weex_.postMessageToService(JSON.stringify(a))
            }
            if (!window.plus) return window.parent.postMessage({type: "WEB_INVOKE_APPSERVICE", data: i, pageId: ""}, "*");
            if (0 === t.length) {
                var d = plus.webview.currentWebview();
                if (!d) throw new Error("plus.webview.currentWebview() is undefined");
                var s = d.parent(), w = "";
                w = s ? s.id : d.id, t.push(w)
            }
            if (plus.webview.getWebviewById("__uniapp__service")) plus.webview.postMessageToUniNView({
                type: "WEB_INVOKE_APPSERVICE",
                args: {data: i, webviewIds: t}
            }, "__uniapp__service"); else {
                var u = JSON.stringify(i);
                plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE", '",').concat(u, ",").concat(JSON.stringify(t), ");"))
            }
        }, a = {
            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) {
                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 || {})
            }
        }, d = /uni-app/i.test(navigator.userAgent), s = /Html5Plus/i.test(navigator.userAgent),
        w = /complete|loaded|interactive/;
    var u = window.my && navigator.userAgent.indexOf("AlipayClient") > -1;
    var g = 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 v = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent);
    var m = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);
    var p = 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 _ = window.jd && window.jd.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);
    for (var E, b = function () {
        window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", {
            bubbles: !0,
            cancelable: !0
        }))
    }, h = [function (e) {
        if (d || s) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && w.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), a
    }, function (e) {
        if (m) 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 (u) {
            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 (g) return document.addEventListener("DOMContentLoaded", e), window.swan.webView
    }, function (e) {
        if (v) 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) {
        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 (_) return window.JDJSBridgeReady && window.JDJSBridgeReady.invoke ? setTimeout(e, 0) : document.addEventListener("JDJSBridgeReady", e), window.jd.miniProgram
    }, function (e) {
        return document.addEventListener("DOMContentLoaded", e), a
    }], y = 0; y < h.length && !(E = h[y](b)); y++) ;
    E || (E = {});
    var B = "undefined" != typeof webUni ? webUni : {};
    if (!B.navigateTo) for (var S in E) i(E, S) && (B[S] = E[S]);
    return B.webView = E, B
}));


分享
0 条讨论
top