const { WEB_VIEW_ENTRY_URL, WEB_VIEW_SOURCE_QUERY } = require('../../config'); function isConfiguredEntryUrl(value) { const trimmed = String(value || '').trim(); return /^https:\/\/[^/]+/i.test(trimmed); } function appendQuery(url, query) { const pairs = Object.keys(query) .filter((key) => query[key]) .map( (key) => `${encodeURIComponent(key)}=${encodeURIComponent(String(query[key]))}`, ); if (pairs.length === 0) { return url; } return `${url}${url.includes('?') ? '&' : '?'}${pairs.join('&')}`; } function resolveWebViewUrl() { const entryUrl = String(WEB_VIEW_ENTRY_URL || '').trim(); if (!isConfiguredEntryUrl(entryUrl)) { return ''; } return appendQuery(entryUrl, WEB_VIEW_SOURCE_QUERY); } Page({ data: { webViewUrl: '', }, onLoad() { // 中文注释:web-view 只能打开已配置业务域名;未配置时展示本地提示,避免空白页误判。 this.setData({ webViewUrl: resolveWebViewUrl(), }); }, handleWebViewLoad(event) { console.info('[web-view] loaded', event.detail); }, handleWebViewError(event) { console.error('[web-view] load failed', event.detail); }, handleWebViewMessage(event) { // 中文注释:H5 如需和小程序壳通信,可通过 wx.miniProgram.postMessage 发送轻量消息。 console.info('[web-view] message', event.detail); }, });