qsh-webview-sdk 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,7 +33,7 @@ npm install qsh-webview-sdk
33
33
  <!-- 微信小程序环境(可选)-->
34
34
  <script type="text/javascript">
35
35
  if (/miniProgram/i.test(navigator.userAgent) && /micromessenger/i.test(navigator.userAgent)) {
36
- document.write('<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');
36
+ document.write('<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"><\/script>');
37
37
  }
38
38
  </script>
39
39
 
@@ -1,5 +1,5 @@
1
1
  function w() {
2
- return window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent);
2
+ return !!(typeof window != "undefined" && window.__wxjs_environment === "miniprogram" || typeof window != "undefined" && window.wx && window.wx.miniProgram || /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent));
3
3
  }
4
4
  function d() {
5
5
  return typeof window.plus != "undefined";
@@ -48,9 +48,9 @@ function N() {
48
48
  window.UniAppJSBridge ? e() : document.addEventListener("UniAppJSBridgeReady", e, { once: !0 });
49
49
  });
50
50
  }
51
- let f = !1;
52
- function g() {
53
- f || (f = !0, O(W));
51
+ let g = !1;
52
+ function f() {
53
+ g || (g = !0, O(W));
54
54
  }
55
55
  let s = [];
56
56
  function $() {
@@ -145,7 +145,7 @@ function D(e, n) {
145
145
  function t(e, n) {
146
146
  p() ? J(e, n) : c() ? V(e, n) : d() ? C(e, n) : D(e, n);
147
147
  }
148
- function z(e = {}) {
148
+ function j(e = {}) {
149
149
  const { url: n } = e;
150
150
  if (window.wx && window.wx.miniProgram)
151
151
  return window.wx.miniProgram.navigateTo({
@@ -155,7 +155,7 @@ function z(e = {}) {
155
155
  url: encodeURI(n)
156
156
  });
157
157
  }
158
- function j(e = {}) {
158
+ function z(e = {}) {
159
159
  const { delta: n = 1 } = e;
160
160
  if (window.wx && window.wx.miniProgram)
161
161
  return window.wx.miniProgram.navigateBack({
@@ -214,8 +214,8 @@ function q(e) {
214
214
  var P = /* @__PURE__ */ Object.freeze({
215
215
  __proto__: null,
216
216
  getEnv: q,
217
- navigateBack: j,
218
- navigateTo: z,
217
+ navigateBack: z,
218
+ navigateTo: j,
219
219
  postMessage: X,
220
220
  reLaunch: H,
221
221
  redirectTo: k,
@@ -291,14 +291,14 @@ function S(e) {
291
291
  function h() {
292
292
  return w() ? P : E;
293
293
  }
294
- function B(e = {}) {
294
+ function y(e = {}) {
295
295
  return h().postMessage(e);
296
296
  }
297
- function y(e) {
297
+ function B(e) {
298
298
  return h().getEnv(e);
299
299
  }
300
- typeof window != "undefined" && (document.readyState === "complete" || document.readyState === "interactive" ? setTimeout(() => g(), 0) : document.addEventListener("DOMContentLoaded", () => {
301
- g();
300
+ typeof window != "undefined" && (document.readyState === "complete" || document.readyState === "interactive" ? setTimeout(() => f(), 0) : document.addEventListener("DOMContentLoaded", () => {
301
+ f();
302
302
  }));
303
303
  const a = {
304
304
  // 导航 API
@@ -308,14 +308,14 @@ const a = {
308
308
  reLaunch: b,
309
309
  redirectTo: S,
310
310
  // 消息 API
311
- postMessage: B,
312
- getEnv: y,
311
+ postMessage: y,
312
+ getEnv: B,
313
313
  // 环境信息
314
314
  environment: v,
315
315
  // 等待桥接准备就绪
316
316
  ready: N,
317
317
  // 添加手动初始化方法(供需要手动控制的场景使用)
318
- init: g,
318
+ init: f,
319
319
  // WebView 对象(兼容旧版本)
320
320
  webView: null
321
321
  };
@@ -325,8 +325,8 @@ v.isWeixinMiniProgram ? a.webView = window.wx && window.wx.miniProgram : a.webVi
325
325
  switchTab: I,
326
326
  reLaunch: b,
327
327
  redirectTo: S,
328
- postMessage: B,
329
- getEnv: y
328
+ postMessage: y,
329
+ getEnv: B
330
330
  };
331
331
  const _ = typeof window.uni != "undefined" ? window.uni : {};
332
332
  Object.keys(_).forEach((e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"uni-webview.es.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n return window.wx && \r\n window.wx.miniProgram && \r\n /micromessenger/i.test(navigator.userAgent) && \r\n /miniProgram/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化;若已完成则立即回调\r\n if (READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 移除最后一行的自动初始化\r\n// initializeBridge(fireJSBridgeReadyEvent);\r\n\r\n// 添加导出 fireJSBridgeReadyEvent\r\nexport { fireJSBridgeReadyEvent };\r\n\r\n// 添加一个标志来避免重复初始化\r\nlet isInitialized = false;\r\n\r\n/**\r\n * 手动初始化 Bridge\r\n */\r\nexport function initBridge() {\r\n if (!isInitialized) {\r\n isInitialized = true;\r\n initializeBridge(fireJSBridgeReadyEvent);\r\n }\r\n}","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n let isAppEnv = false;\r\n\r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n isAppEnv = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n isAppEnv = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n isAppEnv = true;\r\n }\r\n\r\n if (isAppEnv) {\r\n envInfo.app = true;\r\n } else {\r\n envInfo.h5 = true;\r\n }\r\n\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","/*\n * @Description: \n * @Author: TK\n * @Date: 2025-08-06 09:54:28\n * @LastEditors: TK\n * @LastEditTime: 2025-08-08 16:55:09\n */\n/**\n * UniApp WebView SDK\n * 支持微信小程序和 APP 端的 WebView 通信\n */\n\n// 导入核心模块\nimport { waitForBridge, initBridge } from './core/bridge.js';\nimport { environment } from './core/environment.js';\n\n// 导入 API 模块\nimport { \n navigateTo, \n navigateBack, \n switchTab, \n reLaunch, \n redirectTo \n} from './api/navigation.js';\n\nimport { \n postMessage, \n getEnv \n} from './api/message.js';\n\n// 平台特定 API 不在此处直接导入,按需在各模块内处理\n\n// 自动初始化逻辑 - 确保在 DOM 准备好后初始化\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // DOM 已经准备好,立即初始化\n setTimeout(() => initBridge(), 0);\n } else {\n // 等待 DOM 准备好\n document.addEventListener('DOMContentLoaded', () => {\n initBridge();\n });\n }\n}\n\n// 创建 uni 对象\nconst uni = {\n // 导航 API\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n \n // 消息 API\n postMessage,\n getEnv,\n \n // 环境信息\n environment,\n \n // 等待桥接准备就绪\n ready: waitForBridge,\n \n // 添加手动初始化方法(供需要手动控制的场景使用)\n init: initBridge,\n \n // WebView 对象(兼容旧版本)\n webView: null\n};\n\n// 设置 webView 对象\nif (environment.isWeixinMiniProgram) {\n uni.webView = window.wx && window.wx.miniProgram;\n} else {\n uni.webView = {\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n postMessage,\n getEnv\n };\n}\n\n// 保留对原始 uni 对象的引用(如果存在)\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\n\n// 合并原有的 uni 对象属性(如果存在)\nObject.keys(originalUni).forEach(key => {\n if (!uni.hasOwnProperty(key)) {\n uni[key] = originalUni[key];\n }\n});\n\n// 导出\nexport default uni;\n\n// 自动挂载到全局(UMD 模式)\nif (typeof window !== 'undefined') {\n // 仅挂载新全局名,不再暴露 window.uni\n window.qsh = uni;\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","isInitialized","initBridge","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","isAppEnv","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","uni","originalUni","key"],"mappings":"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"}
1
+ {"version":3,"file":"uni-webview.es.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n // 1) 官方标识:小程序 web-view 中会注入该变量\r\n if (typeof window !== 'undefined' && window.__wxjs_environment === 'miniprogram') {\r\n return true;\r\n }\r\n // 2) jweixin >= 1.6.0 提供 wx.miniProgram\r\n if (typeof window !== 'undefined' && window.wx && window.wx.miniProgram) {\r\n return true;\r\n }\r\n // 3) 兜底:在微信内且 UA 带 miniProgram 关键词\r\n if (/micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化;若已完成则立即回调\r\n if (READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 移除最后一行的自动初始化\r\n// initializeBridge(fireJSBridgeReadyEvent);\r\n\r\n// 添加导出 fireJSBridgeReadyEvent\r\nexport { fireJSBridgeReadyEvent };\r\n\r\n// 添加一个标志来避免重复初始化\r\nlet isInitialized = false;\r\n\r\n/**\r\n * 手动初始化 Bridge\r\n */\r\nexport function initBridge() {\r\n if (!isInitialized) {\r\n isInitialized = true;\r\n initializeBridge(fireJSBridgeReadyEvent);\r\n }\r\n}","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n let isAppEnv = false;\r\n\r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n isAppEnv = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n isAppEnv = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n isAppEnv = true;\r\n }\r\n\r\n if (isAppEnv) {\r\n envInfo.app = true;\r\n } else {\r\n envInfo.h5 = true;\r\n }\r\n\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","/*\n * @Description: \n * @Author: TK\n * @Date: 2025-08-06 09:54:28\n * @LastEditors: TK\n * @LastEditTime: 2025-08-08 16:55:09\n */\n/**\n * UniApp WebView SDK\n * 支持微信小程序和 APP 端的 WebView 通信\n */\n\n// 导入核心模块\nimport { waitForBridge, initBridge } from './core/bridge.js';\nimport { environment } from './core/environment.js';\n\n// 导入 API 模块\nimport { \n navigateTo, \n navigateBack, \n switchTab, \n reLaunch, \n redirectTo \n} from './api/navigation.js';\n\nimport { \n postMessage, \n getEnv \n} from './api/message.js';\n\n// 平台特定 API 不在此处直接导入,按需在各模块内处理\n\n// 自动初始化逻辑 - 确保在 DOM 准备好后初始化\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // DOM 已经准备好,立即初始化\n setTimeout(() => initBridge(), 0);\n } else {\n // 等待 DOM 准备好\n document.addEventListener('DOMContentLoaded', () => {\n initBridge();\n });\n }\n}\n\n// 创建 uni 对象\nconst uni = {\n // 导航 API\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n \n // 消息 API\n postMessage,\n getEnv,\n \n // 环境信息\n environment,\n \n // 等待桥接准备就绪\n ready: waitForBridge,\n \n // 添加手动初始化方法(供需要手动控制的场景使用)\n init: initBridge,\n \n // WebView 对象(兼容旧版本)\n webView: null\n};\n\n// 设置 webView 对象\nif (environment.isWeixinMiniProgram) {\n uni.webView = window.wx && window.wx.miniProgram;\n} else {\n uni.webView = {\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n postMessage,\n getEnv\n };\n}\n\n// 保留对原始 uni 对象的引用(如果存在)\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\n\n// 合并原有的 uni 对象属性(如果存在)\nObject.keys(originalUni).forEach(key => {\n if (!uni.hasOwnProperty(key)) {\n uni[key] = originalUni[key];\n }\n});\n\n// 导出\nexport default uni;\n\n// 自动挂载到全局(UMD 模式)\nif (typeof window !== 'undefined') {\n // 仅挂载新全局名,不再暴露 window.uni\n window.qsh = uni;\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","isInitialized","initBridge","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","isAppEnv","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","uni","originalUni","key"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- (function(o,r){typeof exports=="object"&&typeof module!="undefined"?module.exports=r():typeof define=="function"&&define.amd?define(r):(o=typeof globalThis!="undefined"?globalThis:o||self,o.qsh=r())})(this,function(){"use strict";function o(){return window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent)}function r(){return typeof window.plus!="undefined"}function c(){return window.__dcloud_weex_postMessage||window.__dcloud_weex_}function p(){return window.__uniapp_x_postMessage||window.__uniapp_x_}function g(){return/uni-app/i.test(navigator.userAgent)}function _(){return/Html5Plus/i.test(navigator.userAgent)}function A(){return p()?"uvue":c()?"nvue":o()?"weixin":r()?"plus":"h5"}const l={isWeixinMiniProgram:o(),isAppPlus:r(),isNvue:c(),isUvue:p(),isUniApp:g(),isHtml5Plus:_(),type:A()},m=/complete|loaded|interactive/;function U(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))}function W(e){return g()||_()?(window.__uniapp_x_postMessage||window.__uniapp_x_||window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&m.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),!0):!1}function L(e){return window.wx&&window.wx.miniProgram?(window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),!0):!1}function R(e){return W(e)||L(e)||(m.test(document.readyState)?setTimeout(e,0):document.addEventListener("DOMContentLoaded",e)),!0}function O(){return new Promise(e=>{window.UniAppJSBridge?e():document.addEventListener("UniAppJSBridgeReady",e,{once:!0})})}let v=!1;function f(){v||(v=!0,R(U))}let w=[];function N(){if(w.length===0&&window.plus){const e=plus.webview.currentWebview();if(!e)throw new Error("plus.webview.currentWebview() is undefined");const n=e.parent(),i=n?n.id:e.id;w.push(i)}return w}function $(e,n){const i={options:{timestamp:+new Date},name:e,arg:n};if(e==="postMessage"){const a={data:n};return window.__uniapp_x_postMessage?window.__uniapp_x_postMessage(a):window.__uniapp_x_.postMessage(JSON.stringify(a))}const s={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:w}};window.__uniapp_x_postMessage?window.__uniapp_x_postMessageToService(s):window.__uniapp_x_.postMessageToService(JSON.stringify(s))}function J(e,n){const i={options:{timestamp:+new Date},name:e,arg:n};if(e==="postMessage"){const a={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(a):window.__dcloud_weex_.postMessage(JSON.stringify(a))}const s={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:w}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(s):window.__dcloud_weex_.postMessageToService(JSON.stringify(s))}function V(e,n){const i={options:{timestamp:+new Date},name:e,arg:n},s=N();if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:s}},"__uniapp__service");else{const a=JSON.stringify(i),ne=JSON.stringify(s);plus.webview.getLaunchWebview().evalJS(`UniPlusBridge.subscribeHandler("WEB_INVOKE_APPSERVICE",${a},${ne});`)}}function C(e,n){const i={options:{timestamp:+new Date},name:e,arg:n};window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:i,pageId:""},"*")}function t(e,n){p()?$(e,n):c()?J(e,n):r()?V(e,n):C(e,n)}function D(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.navigateTo({url:n});t("navigateTo",{url:encodeURI(n)})}function j(e={}){const{delta:n=1}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.navigateBack({delta:parseInt(n)});t("navigateBack",{delta:parseInt(n)})}function z(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.switchTab({url:n});t("switchTab",{url:encodeURI(n)})}function K(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.reLaunch({url:n});t("reLaunch",{url:encodeURI(n)})}function H(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.redirectTo({url:n});t("redirectTo",{url:encodeURI(n)})}function k(e={}){const{data:n={}}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.postMessage({data:n});t("postMessage",n)}function q(e){if(window.wx&&window.wx.miniProgram&&window.wx.miniProgram.getEnv)return window.wx.miniProgram.getEnv(e);e({miniprogram:!0,weixin:!0})}var x=Object.freeze({__proto__:null,getEnv:q,navigateBack:j,navigateTo:D,postMessage:k,reLaunch:K,redirectTo:H,switchTab:z});function X(e={}){const{url:n}=e;t("navigateTo",{url:encodeURI(n)})}function F(e={}){const{delta:n=1}=e;t("navigateBack",{delta:parseInt(n)})}function G(e={}){const{url:n}=e;t("switchTab",{url:encodeURI(n)})}function Y(e={}){const{url:n}=e;t("reLaunch",{url:encodeURI(n)})}function Q(e={}){const{url:n}=e;t("redirectTo",{url:encodeURI(n)})}function Z(e={}){const{data:n={}}=e;t("postMessage",n)}function ee(e){const n={};let i=!1;p()?(n.uvue=!0,i=!0):c()?(n.nvue=!0,i=!0):r()&&(n.plus=!0,i=!0),i?n.app=!0:n.h5=!0,e(n)}var P=Object.freeze({__proto__:null,getEnv:ee,navigateBack:F,navigateTo:X,postMessage:Z,reLaunch:Y,redirectTo:Q,switchTab:G});function d(){return o()?x:P}function E(e){return d().navigateTo(e)}function T(e){return d().navigateBack(e)}function M(e){return d().switchTab(e)}function I(e){return d().reLaunch(e)}function b(e){return d().redirectTo(e)}function h(){return o()?x:P}function S(e={}){return h().postMessage(e)}function y(e){return h().getEnv(e)}typeof window!="undefined"&&(document.readyState==="complete"||document.readyState==="interactive"?setTimeout(()=>f(),0):document.addEventListener("DOMContentLoaded",()=>{f()}));const u={navigateTo:E,navigateBack:T,switchTab:M,reLaunch:I,redirectTo:b,postMessage:S,getEnv:y,environment:l,ready:O,init:f,webView:null};l.isWeixinMiniProgram?u.webView=window.wx&&window.wx.miniProgram:u.webView={navigateTo:E,navigateBack:T,switchTab:M,reLaunch:I,redirectTo:b,postMessage:S,getEnv:y};const B=typeof window.uni!="undefined"?window.uni:{};return Object.keys(B).forEach(e=>{u.hasOwnProperty(e)||(u[e]=B[e])}),typeof window!="undefined"&&(window.qsh=u),u});
1
+ (function(o,r){typeof exports=="object"&&typeof module!="undefined"?module.exports=r():typeof define=="function"&&define.amd?define(r):(o=typeof globalThis!="undefined"?globalThis:o||self,o.qsh=r())})(this,function(){"use strict";function o(){return!!(typeof window!="undefined"&&window.__wxjs_environment==="miniprogram"||typeof window!="undefined"&&window.wx&&window.wx.miniProgram||/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent))}function r(){return typeof window.plus!="undefined"}function c(){return window.__dcloud_weex_postMessage||window.__dcloud_weex_}function p(){return window.__uniapp_x_postMessage||window.__uniapp_x_}function g(){return/uni-app/i.test(navigator.userAgent)}function _(){return/Html5Plus/i.test(navigator.userAgent)}function A(){return p()?"uvue":c()?"nvue":o()?"weixin":r()?"plus":"h5"}const l={isWeixinMiniProgram:o(),isAppPlus:r(),isNvue:c(),isUvue:p(),isUniApp:g(),isHtml5Plus:_(),type:A()},m=/complete|loaded|interactive/;function U(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))}function W(e){return g()||_()?(window.__uniapp_x_postMessage||window.__uniapp_x_||window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&m.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),!0):!1}function L(e){return window.wx&&window.wx.miniProgram?(window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),!0):!1}function R(e){return W(e)||L(e)||(m.test(document.readyState)?setTimeout(e,0):document.addEventListener("DOMContentLoaded",e)),!0}function O(){return new Promise(e=>{window.UniAppJSBridge?e():document.addEventListener("UniAppJSBridgeReady",e,{once:!0})})}let v=!1;function f(){v||(v=!0,R(U))}let w=[];function N(){if(w.length===0&&window.plus){const e=plus.webview.currentWebview();if(!e)throw new Error("plus.webview.currentWebview() is undefined");const n=e.parent(),i=n?n.id:e.id;w.push(i)}return w}function $(e,n){const i={options:{timestamp:+new Date},name:e,arg:n};if(e==="postMessage"){const u={data:n};return window.__uniapp_x_postMessage?window.__uniapp_x_postMessage(u):window.__uniapp_x_.postMessage(JSON.stringify(u))}const s={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:w}};window.__uniapp_x_postMessage?window.__uniapp_x_postMessageToService(s):window.__uniapp_x_.postMessageToService(JSON.stringify(s))}function J(e,n){const i={options:{timestamp:+new Date},name:e,arg:n};if(e==="postMessage"){const u={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(u):window.__dcloud_weex_.postMessage(JSON.stringify(u))}const s={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:w}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(s):window.__dcloud_weex_.postMessageToService(JSON.stringify(s))}function V(e,n){const i={options:{timestamp:+new Date},name:e,arg:n},s=N();if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:s}},"__uniapp__service");else{const u=JSON.stringify(i),ne=JSON.stringify(s);plus.webview.getLaunchWebview().evalJS(`UniPlusBridge.subscribeHandler("WEB_INVOKE_APPSERVICE",${u},${ne});`)}}function C(e,n){const i={options:{timestamp:+new Date},name:e,arg:n};window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:i,pageId:""},"*")}function t(e,n){p()?$(e,n):c()?J(e,n):r()?V(e,n):C(e,n)}function D(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.navigateTo({url:n});t("navigateTo",{url:encodeURI(n)})}function j(e={}){const{delta:n=1}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.navigateBack({delta:parseInt(n)});t("navigateBack",{delta:parseInt(n)})}function z(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.switchTab({url:n});t("switchTab",{url:encodeURI(n)})}function K(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.reLaunch({url:n});t("reLaunch",{url:encodeURI(n)})}function H(e={}){const{url:n}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.redirectTo({url:n});t("redirectTo",{url:encodeURI(n)})}function k(e={}){const{data:n={}}=e;if(window.wx&&window.wx.miniProgram)return window.wx.miniProgram.postMessage({data:n});t("postMessage",n)}function q(e){if(window.wx&&window.wx.miniProgram&&window.wx.miniProgram.getEnv)return window.wx.miniProgram.getEnv(e);e({miniprogram:!0,weixin:!0})}var x=Object.freeze({__proto__:null,getEnv:q,navigateBack:j,navigateTo:D,postMessage:k,reLaunch:K,redirectTo:H,switchTab:z});function X(e={}){const{url:n}=e;t("navigateTo",{url:encodeURI(n)})}function F(e={}){const{delta:n=1}=e;t("navigateBack",{delta:parseInt(n)})}function G(e={}){const{url:n}=e;t("switchTab",{url:encodeURI(n)})}function Y(e={}){const{url:n}=e;t("reLaunch",{url:encodeURI(n)})}function Q(e={}){const{url:n}=e;t("redirectTo",{url:encodeURI(n)})}function Z(e={}){const{data:n={}}=e;t("postMessage",n)}function ee(e){const n={};let i=!1;p()?(n.uvue=!0,i=!0):c()?(n.nvue=!0,i=!0):r()&&(n.plus=!0,i=!0),i?n.app=!0:n.h5=!0,e(n)}var P=Object.freeze({__proto__:null,getEnv:ee,navigateBack:F,navigateTo:X,postMessage:Z,reLaunch:Y,redirectTo:Q,switchTab:G});function d(){return o()?x:P}function E(e){return d().navigateTo(e)}function T(e){return d().navigateBack(e)}function M(e){return d().switchTab(e)}function I(e){return d().reLaunch(e)}function b(e){return d().redirectTo(e)}function h(){return o()?x:P}function y(e={}){return h().postMessage(e)}function S(e){return h().getEnv(e)}typeof window!="undefined"&&(document.readyState==="complete"||document.readyState==="interactive"?setTimeout(()=>f(),0):document.addEventListener("DOMContentLoaded",()=>{f()}));const a={navigateTo:E,navigateBack:T,switchTab:M,reLaunch:I,redirectTo:b,postMessage:y,getEnv:S,environment:l,ready:O,init:f,webView:null};l.isWeixinMiniProgram?a.webView=window.wx&&window.wx.miniProgram:a.webView={navigateTo:E,navigateBack:T,switchTab:M,reLaunch:I,redirectTo:b,postMessage:y,getEnv:S};const B=typeof window.uni!="undefined"?window.uni:{};return Object.keys(B).forEach(e=>{a.hasOwnProperty(e)||(a[e]=B[e])}),typeof window!="undefined"&&(window.qsh=a),a});
2
2
  //# sourceMappingURL=uni-webview.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uni-webview.umd.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n return window.wx && \r\n window.wx.miniProgram && \r\n /micromessenger/i.test(navigator.userAgent) && \r\n /miniProgram/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化;若已完成则立即回调\r\n if (READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 移除最后一行的自动初始化\r\n// initializeBridge(fireJSBridgeReadyEvent);\r\n\r\n// 添加导出 fireJSBridgeReadyEvent\r\nexport { fireJSBridgeReadyEvent };\r\n\r\n// 添加一个标志来避免重复初始化\r\nlet isInitialized = false;\r\n\r\n/**\r\n * 手动初始化 Bridge\r\n */\r\nexport function initBridge() {\r\n if (!isInitialized) {\r\n isInitialized = true;\r\n initializeBridge(fireJSBridgeReadyEvent);\r\n }\r\n}","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n let isAppEnv = false;\r\n\r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n isAppEnv = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n isAppEnv = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n isAppEnv = true;\r\n }\r\n\r\n if (isAppEnv) {\r\n envInfo.app = true;\r\n } else {\r\n envInfo.h5 = true;\r\n }\r\n\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","/*\n * @Description: \n * @Author: TK\n * @Date: 2025-08-06 09:54:28\n * @LastEditors: TK\n * @LastEditTime: 2025-08-08 16:55:09\n */\n/**\n * UniApp WebView SDK\n * 支持微信小程序和 APP 端的 WebView 通信\n */\n\n// 导入核心模块\nimport { waitForBridge, initBridge } from './core/bridge.js';\nimport { environment } from './core/environment.js';\n\n// 导入 API 模块\nimport { \n navigateTo, \n navigateBack, \n switchTab, \n reLaunch, \n redirectTo \n} from './api/navigation.js';\n\nimport { \n postMessage, \n getEnv \n} from './api/message.js';\n\n// 平台特定 API 不在此处直接导入,按需在各模块内处理\n\n// 自动初始化逻辑 - 确保在 DOM 准备好后初始化\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // DOM 已经准备好,立即初始化\n setTimeout(() => initBridge(), 0);\n } else {\n // 等待 DOM 准备好\n document.addEventListener('DOMContentLoaded', () => {\n initBridge();\n });\n }\n}\n\n// 创建 uni 对象\nconst uni = {\n // 导航 API\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n \n // 消息 API\n postMessage,\n getEnv,\n \n // 环境信息\n environment,\n \n // 等待桥接准备就绪\n ready: waitForBridge,\n \n // 添加手动初始化方法(供需要手动控制的场景使用)\n init: initBridge,\n \n // WebView 对象(兼容旧版本)\n webView: null\n};\n\n// 设置 webView 对象\nif (environment.isWeixinMiniProgram) {\n uni.webView = window.wx && window.wx.miniProgram;\n} else {\n uni.webView = {\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n postMessage,\n getEnv\n };\n}\n\n// 保留对原始 uni 对象的引用(如果存在)\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\n\n// 合并原有的 uni 对象属性(如果存在)\nObject.keys(originalUni).forEach(key => {\n if (!uni.hasOwnProperty(key)) {\n uni[key] = originalUni[key];\n }\n});\n\n// 导出\nexport default uni;\n\n// 自动挂载到全局(UMD 模式)\nif (typeof window !== 'undefined') {\n // 仅挂载新全局名,不再暴露 window.uni\n window.qsh = uni;\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","isInitialized","initBridge","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","isAppEnv","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","uni","originalUni","key"],"mappings":"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"}
1
+ {"version":3,"file":"uni-webview.umd.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n // 1) 官方标识:小程序 web-view 中会注入该变量\r\n if (typeof window !== 'undefined' && window.__wxjs_environment === 'miniprogram') {\r\n return true;\r\n }\r\n // 2) jweixin >= 1.6.0 提供 wx.miniProgram\r\n if (typeof window !== 'undefined' && window.wx && window.wx.miniProgram) {\r\n return true;\r\n }\r\n // 3) 兜底:在微信内且 UA 带 miniProgram 关键词\r\n if (/micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化;若已完成则立即回调\r\n if (READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 移除最后一行的自动初始化\r\n// initializeBridge(fireJSBridgeReadyEvent);\r\n\r\n// 添加导出 fireJSBridgeReadyEvent\r\nexport { fireJSBridgeReadyEvent };\r\n\r\n// 添加一个标志来避免重复初始化\r\nlet isInitialized = false;\r\n\r\n/**\r\n * 手动初始化 Bridge\r\n */\r\nexport function initBridge() {\r\n if (!isInitialized) {\r\n isInitialized = true;\r\n initializeBridge(fireJSBridgeReadyEvent);\r\n }\r\n}","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n let isAppEnv = false;\r\n\r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n isAppEnv = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n isAppEnv = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n isAppEnv = true;\r\n }\r\n\r\n if (isAppEnv) {\r\n envInfo.app = true;\r\n } else {\r\n envInfo.h5 = true;\r\n }\r\n\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","/*\n * @Description: \n * @Author: TK\n * @Date: 2025-08-06 09:54:28\n * @LastEditors: TK\n * @LastEditTime: 2025-08-08 16:55:09\n */\n/**\n * UniApp WebView SDK\n * 支持微信小程序和 APP 端的 WebView 通信\n */\n\n// 导入核心模块\nimport { waitForBridge, initBridge } from './core/bridge.js';\nimport { environment } from './core/environment.js';\n\n// 导入 API 模块\nimport { \n navigateTo, \n navigateBack, \n switchTab, \n reLaunch, \n redirectTo \n} from './api/navigation.js';\n\nimport { \n postMessage, \n getEnv \n} from './api/message.js';\n\n// 平台特定 API 不在此处直接导入,按需在各模块内处理\n\n// 自动初始化逻辑 - 确保在 DOM 准备好后初始化\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // DOM 已经准备好,立即初始化\n setTimeout(() => initBridge(), 0);\n } else {\n // 等待 DOM 准备好\n document.addEventListener('DOMContentLoaded', () => {\n initBridge();\n });\n }\n}\n\n// 创建 uni 对象\nconst uni = {\n // 导航 API\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n \n // 消息 API\n postMessage,\n getEnv,\n \n // 环境信息\n environment,\n \n // 等待桥接准备就绪\n ready: waitForBridge,\n \n // 添加手动初始化方法(供需要手动控制的场景使用)\n init: initBridge,\n \n // WebView 对象(兼容旧版本)\n webView: null\n};\n\n// 设置 webView 对象\nif (environment.isWeixinMiniProgram) {\n uni.webView = window.wx && window.wx.miniProgram;\n} else {\n uni.webView = {\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n postMessage,\n getEnv\n };\n}\n\n// 保留对原始 uni 对象的引用(如果存在)\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\n\n// 合并原有的 uni 对象属性(如果存在)\nObject.keys(originalUni).forEach(key => {\n if (!uni.hasOwnProperty(key)) {\n uni[key] = originalUni[key];\n }\n});\n\n// 导出\nexport default uni;\n\n// 自动挂载到全局(UMD 模式)\nif (typeof window !== 'undefined') {\n // 仅挂载新全局名,不再暴露 window.uni\n window.qsh = uni;\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","isInitialized","initBridge","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","isAppEnv","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","uni","originalUni","key"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qsh-webview-sdk",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "UniApp WebView SDK for WeChat MiniProgram and App",
5
5
  "main": "dist/uni-webview.umd.js",
6
6
  "module": "dist/uni-webview.es.js",