# web-view

承载网页的容器。此组件会自动铺满整个快应用页面,且每个页面最多只能有一个。

属性 类型
默认值
必填
说明
src string webview 指向网页的链接;可以通过 qa.setTrustedUrls 方法为业务,设定可信任网址。
bindload eventhandler 网页加载成功时候触发此事件。e.detail = { src }
binderror eventhandler 网页加载失败的时候触发此事件。e.detail = { src }
bindmessage eventhandler 网页通过 postMessage 方法向快应用发送消息,会在特定时机(如:快应用后退、组件销毁)触发并收到。e.detail = { data },data 是多次 postMessage 的参数组成的数组

默认情形下,src 属性所指向网页的链接,是可以信任的;为安全考量,其他网页如果想调用 JSSDK 中提供的 API,须通过 qa.setTrustedUrls 方法,配置可信任的网址(支持正则表达式),示例如下:

// app.js
qa.setTrustedUrls([
  'https://your-domain-name.cn/explore/',
  /^https?:\/\/your-domain-name.com/,
  /^https?:\/\/(www\.)your-domain-name.com/,
  /^https?:\/\/([a-z0-9]*\.)your-domain-name.com/
])
1
2
3
4
5
6
7

# 相关接口

web-view 加载的H5页面中可使用内置 JSSDK 提供的接口。 使用相关的接口需要在web-view 加载的H5页面引入js件:<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js" ></script>。现支持的有以下接口: 注意:https://quickapp/jssdk.webview.min.js 无法在线访问,仅支持快应用客户端内部加载.

接口名 说明
qa.navigateTo 参数与快应用接口一致
qa.navigateBack 参数与快应用接口一致
qa.switchTab 参数与快应用接口一致
qa.reLaunch 参数与快应用接口一致
qa.redirectTo 参数与快应用接口一致
qa.postMessage 向快应用发送消息,会在特定时机(快应用后退、组件销毁)触发组件的 Message 事件
qa.getEnv 获取当前环境

# 示例代码

<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js" ></script>

// JavaScript Code
qa.navigateTo({ url: '/path/to/page' })

qa.navigateBack({
  delta: 1,
  success: res => {
    // 做些你需要处理的事情
  }
})

qa.postMessage({ data: 'QuickApp' })
qa.postMessage({ data: { foo: 'QuickApp' } })
1
2
3
4
5
6
7
8
9
10
11
12
13
14

在网页内可通过 window.__qajs_environment 变量,来判断是否在快应用环境;也可以在 QaJSBridgeReady 回调中使用,或者使用 getEnv 接口,还可以通过判断 userAgent 中,是否包含 mode-quickapp 字样来判断。具体请参见如下示例:

<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js" ></script>

// web-view 下网页对应代码
function jSBridgeReady() {
  console.log(window.__qajs_environment === 'quickapp') // true
}
if (!window.QaJSBridge || !QaJSBridge.invoke) {
  document.addEventListener('QaJSBridgeReady', jSBridgeReady, false)
} else {
  jSBridgeReady()
}

// 或者在 getEnv 回调中处理
qa.getEnv(res => {
  console.log(res.quickapp) // true
})

// 或者基于 userAgent 判断
if (navigator.userAgent.includes('mode-quickapp')) {
  // 做些你需要处理的事情
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# Bug & Tip

  • 每个页面只能有一个 web-view,web-view 会自动铺满整个页面,并覆盖其他组件;
  • 如果 src 所指定的网页,不能正常调用所提供的 API,请检查是否引入js件;
  • 倘若跳转的网页,不能正常调用所提供的 API,请检查该网页是否在 qa.setTrustedUrls 所指定规则内;
  • web-view 网页与快应用之间不支持除 JSSDK 提供的接口之外的通信;
  • https://quickapp/jssdk.webview.min.js 无法在线访问,仅支持快应用客户端内部加载
  • 在 webview 的 useragent 后追加内容,格式是 hap/<平台版本号>/<厂商标识> <平台应用包名>/<平台应用版本号> <应用名>/<应用版本号> (<来源信息>) mode-quickapp。

来源信息

参数名 类型 说明
packageName String 来源 app 的包名,一级来源
type String 来源类型,二级来源,值为 shortcutpushurlbarcodenfcbluetoothother
extra Object 来源其他信息,与 type 相关,不同的 type,extra 中的字段会不同

在线客服