小工具知识网

当前位置: 首页 > 行业知识 > uniapp中 app与webview的通讯

行业知识

uniapp中 app与webview的通讯

2026-11-01 01:43:31 来源:互联网转载

1.app->webview

app发送

此处index.php/tags-602.html" >使用evalJS方法

生成评估总结methods:{   chatRes() {let str="需要发送的信息"const _funName = 'msgFromUniapp'const _data = {msg: str};const currentWebview = this.$scope.$getAppWebview().children()[0];currentWebview.evalJS(`${_funName}(${JSON.stringify(_data)})`);},}

webview接收

评测记录let msg=''window.msgFromUniapp = function(arg) {msg=arg.msgconsole.log(msg);}

2.webview->app

webview发送

评测记录const sendMsg = () => {             let str="待发送的信息"uni.postMessage({data: {msgContent:str}})}

app接收

methods:{    handlerMessage(event) {console.log(event.detail.data[0])},}

3.踩坑记录

webview使用uni.postMessage发送消息给app时报uni.postMessage is not a function

解决方案

  • 取消引入官方库uni-webview-js
  • 改写uni为y_uni,调用y_uni.postMessage
    评测记录let y_uni;! function(e, n) {y_uni = n();returnconsole.log(4777)console.log(n())"object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define &&define.amd ? define(n) : (e = e || self).y_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 r() {return window.__dcloud_weex_postMessage || window.__dcloud_weex_}var o = function(e, n) {var i = {options: {timestamp: +new Date},name: e,arg: n};if (r()) {if ("postMessage" === e) {var o = {data: [n]};return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(o) : window.__dcloud_weex_.postMessage(JSON.stringify(o))}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;o("navigateTo", {url: encodeURI(n)})},navigateBack: function() {var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},n = e.delta;o("navigateBack", {delta: parseInt(n) || 1})},switchTab: function() {var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},n = e.url;o("switchTab", {url: encodeURI(n)})},reLaunch: function() {var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},n = e.url;o("reLaunch", {url: encodeURI(n)})},redirectTo: function() {var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},n = e.url;o("redirectTo", {url: encodeURI(n)})},getEnv: function(e) {r() ? e({nvue: !0}) : window.plus ? e({plus: !0}) : e({h5: !0})},postMessage: function() {var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};o("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(["t", "n", "e", "i", "l", "C", "y", "a", "p", "i", "l","A"].reverse().join("")) > -1;var g = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent);var v = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);var c = 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);var E = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent);for (var h, P = function() {window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", {bubbles: !0,cancelable: !0}))}, b = [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 (v) 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 (c) 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) {if (E) return window.xhs.miniProgram}, function(e) {return document.addEventListener("DOMContentLoaded", e), a}], y = 0; y  {let str="待发送的信息"y_uni.postMessage({data: {msgContent:str}})}

上一篇:腾讯云4核8G12M服务器性能如何?使用场景分析

下一篇:服务器怎么调英文版?