#### web-view
> 基础库 1.6.4 开始支持,低版本需做[兼容处理](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html)
web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。**个人类型与海外类型的小程序暂不支持使用。**
| 属性名 | 类型 | 默认值 | 说明 |
| ----------- | ------------ | ---- | ---------------------------------------- |
| src | String | | webview 指向网页的链接。需登录[小程序管理后台](https://mp.weixin.qq.com/)配置域名白名单。 |
| bindmessage | EventHandler | | 网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。e.detail = { data } |
示例代码:
```
<!-- wxml -->
<!-- 指向微信公众平台首页的web-view -->
<web-view src="https://mp.weixin.qq.com/"></web-view>
```
##### 相关接口 1
`<web-view/>`网页中可使用[JSSDK 1.3.2](https://res.wx.qq.com/open/js/jweixin-1.3.2.js)提供的接口返回小程序页面。 支持的接口有:
| 接口名 | 说明 | 最低版本 |
| --------------------------- | ---------- | ---------------------------------------- |
| wx.miniProgram.navigateTo | 参数与小程序接口一致 | [1.6.4](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
| wx.miniProgram.navigateBack | 参数与小程序接口一致 | [1.6.4](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
| wx.miniProgram.switchTab | 参数与小程序接口一致 | [1.6.5](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
| wx.miniProgram.reLaunch | 参数与小程序接口一致 | [1.6.5](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
| wx.miniProgram.redirectTo | 参数与小程序接口一致 | [1.6.5](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
| wx.miniProgram.postMessage | 向小程序发送消息 | [1.7.1](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
| wx.miniProgram.getEnv | 获取当前环境 | [1.7.1](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/compatibility.html) |
示例代码:
```
<!-- html -->
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
// javascript
wx.miniProgram.navigateTo({url: '/path/to/page'})
wx.miniProgram.postMessage({ data: 'foo' })
wx.miniProgram.postMessage({ data: {foo: 'bar'} })
wx.miniProgram.getEnv(function(res) { console.log(res.miniprogram) // true })
```
##### 相关接口 2
`<web-view/>`网页中**仅支持以下JSSDK接口**:
| 接口模块 | 接口说明 | 具体接口 |
| ----------- | --------- | ------------------ |
| 判断客户端是否支持js | | checkJSApi |
| 图像接口 | 拍照或上传 | chooseImage |
| | 预览图片 | previewImage |
| | 上传图片 | uploadImage |
| | 下载图片 | downloadImage |
| | 获取本地图片 | getLocalImgData |
| 音频接口 | 开始录音 | startRecord |
| | 停止录音 | stopRecord |
| | 监听录音自动停止 | onVoiceRecordEnd |
| | 播放语音 | playVoice |
| | 暂停播放 | pauseVoice |
| | 停止播放 | stopVoice |
| | 监听语音播放完毕 | onVoicePlayEnd |
| | 上传接口 | uploadVoice |
| | 下载接口 | downloadVoice |
| 智能接口 | 识别音频 | translateVoice |
| 设备信息 | 获取网络状态 | getNetworkType |
| 地理位置 | 使用内置地图 | getLocation |
| | 获取地理位置 | openLocation |
| 摇一摇周边 | 开启ibeacon | startSearchBeacons |
| | 关闭ibeacon | stopSearchBeacons |
| | 监听ibeacon | onSearchBeacons |
| 微信扫一扫 | 调起微信扫一扫 | scanQRCode |
| 微信卡券 | 拉取使用卡券列表 | chooseCard |
| | 批量添加卡券接口 | addCard |
| | 查看微信卡包的卡券 | openCard |
| 长按识别 | 小程序圆形码 | 无 |
##### 相关接口 3
用户分享时可获取当前`<web-view/>`的URL,即在`onShareAppMessage`回调中返回`webViewUrl`参数。
示例代码:
```
Page({
onShareAppMessage(options) {
console.log(options.webViewUrl)
}
})
```
##### 相关接口 4
在网页内可通过`window.__wxjs_environment`变量判断是否在小程序环境,建议在`WeixinJSBridgeReady`回调中使用,也可以使用[JSSDK 1.3.2](https://res.wx.qq.com/open/js/jweixin-1.3.2.js)提供的`getEnv`接口。
示例代码:
```
// web-view下的页面内
function ready() {
console.log(window.__wxjs_environment === 'miniprogram') // true
}
if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
document.addEventListener('WeixinJSBridgeReady', ready, false)
} else {
ready()
}
// 或者
wx.miniProgram.getEnv(function(res) {
console.log(res.miniprogram) // true
})
```
##### Bug & Tip
1. **网页内iframe的域名也需要配置到域名白名单。**
2. 开发者工具上,可以在 `<web-view/>` 组件上通过右键 - 调试,打开 `<web-view/>` 组件的调试。
3. 每个页面只能有一个`<web-view/>`,`<web-view/>`会自动铺满整个页面,并覆盖其他组件。
4. `<web-view/>`网页与小程序之间不支持除JSSDK提供的接口之外的通信。
5. 在iOS中,若存在JSSDK接口调用无响应的情况,可在`<web-view/>`的src后面加个#wechat_redirect解决。
- 简介
- 第一章 公众号开发
- 使用微信JSSDK
- 接口权限配置
- 分享接口
- 隐藏按钮项
- 微信支付
- 第二章 小程序开发
- 基础知识
- 分包加载
- WXSS样式表
- 配置
- app.json配置
- window
- tabBar
- page.json配置
- 逻辑层
- app.js
- 场景值
- page.js
- 初始化数据
- 生命周期函数
- 页面相关事件处理函数
- 事件处理函数
- 页面实例方法
- 路由
- 文件作用域
- 模块化
- 视图层
- 模板语法
- 列表渲染
- 条件渲染
- 模板
- 事件
- 引用
- WXS语法规范
- WXS数据类型
- WXS控制流程
- WXS基础类库
- 组件
- 视图容器
- view
- scroll-view
- swiper
- movable-view
- cover-view
- 基础组件
- icon
- text
- rich-text
- progress
- 表单组件
- button
- checkbox
- form
- input
- label
- picker
- picker-view
- radio
- slider
- switch
- textarea
- 导航组件
- navigator
- 媒体组件
- audio
- image
- video
- camera
- 地图组件
- map
- 画布组件
- canvas
- 开放能力
- web-view
- 自定义组件
- 组件模版和样式
- Component
- 组件传值
- 组件事件
- Behaviors
- 组件间关系
- 网络请求
- wx.request
- 微信登录
- 获取 openid 和 unionid
- 获取用户信息
- 将 wx.request 封装为 promise
- 上传图片接口封装
- 数据存储
- 存储数据和读取数据
- 获取数据缓存信息
- 移除数据缓存
- 获取用户设置
- openSetting
- getSetting
- 第三章 小游戏开发
- 参考资料