• web-view
    • 相关接口 1
    • 相关接口 2
    • 相关接口 3
    • 相关接口 4
    • 相关接口 5
    • Bug & Tip

    web-view

    web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面,个人类型小程序暂不支持使用。

    属性名类型默认值说明
    srcStringwebview 指向网页的链接。可打开关联的公众号的文章,其它网页需登录QQ小程序管理后台web-view - 图1配置业务域名。
    bindmessageEventHandler网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。e.detail = { data },data是多次 postMessage 的参数组成的数组
    bindloadEventHandler网页加载成功时候触发此事件。e.detail = { src }
    binderrorEventHandler网页加载失败的时候触发此事件。e.detail = { src }

    示例代码:

    1. <!-- qml -->
    2. <web-view src="https://q.qq.com/"></web-view>
    相关接口 1

    <web-view>网页中可使用JSSDK提供的接口返回小程序页面。支持的接口有:

    接口名说明最低版本
    qq.miniProgram.navigateTo参数与小程序接口一致
    qq.miniProgram.navigateBack参数与小程序接口一致
    qq.miniProgram.switchTab参数与小程序接口一致
    qq.miniProgram.reLaunch参数与小程序接口一致
    qq.miniProgram.redirectTo参数与小程序接口一致
    qq.miniProgram.postMessage向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件
    qq.miniProgram.getEnv获取当前环境

    示例代码:

    1. <!-- html -->
    2. <script
    3. type="text/javascript"
    4. src="https://qqq.gtimg.cn/miniprogram/webview_jssdk/qqjssdk-1.0.0.js"
    5. ></script>
    6. // javascript qq.miniProgram.navigateTo({url: '/path/to/page'})
    7. qq.miniProgram.postMessage({ data: 'foo' }) qq.miniProgram.postMessage({ data:
    8. {foo: 'bar'} }) qq.miniProgram.getEnv(function(res) {
    9. console.log(res.miniprogram) // true })
    相关接口 2

    <web-view>网页中暂不支持其他媒体相关接口:

    相关接口 3

    用户分享时可获取当前<web-view>的URL,即在onShareAppMessage回调中返回webViewUrl参数。

    示例代码:

    1. Page({
    2. onShareAppMessage(options) {
    3. console.log(options.webViewUrl)
    4. }
    5. })
    相关接口 4

    在网页内可通过window.__qqjs_environment变量判断是否在小程序环境,建议在QQJSBridgeReady回调中使用,也可以使用JSSDK提供的getEnv接口。

    示例代码:

    1. // web-view下的页面内
    2. function ready() {
    3. console.log(window.__qqjs_environment === 'miniprogram') // true
    4. }
    5. if (!window.QQJSBridge || !QQJSBridge.invoke) {
    6. document.addEventListener('QQJSBridgeReady', ready, false)
    7. } else {
    8. ready()
    9. }
    10. // 或者
    11. qq.miniProgram.getEnv(function (res) {
    12. console.log(res.miniprogram) // true
    13. })
    相关接口 5

    可以通过判断userAgent中包含miniProgram字样来判断小程序web-view环境。

    Bug & Tip
    • 网页内 iframe 的域名也需要配置到域名白名单。
    • 开发者工具上,可以在 <web-view> 组件上通过右键 - 调试,打开 <web-view> 组件的调试。
    • 每个页面只能有一个 <web-view><web-view> 会自动铺满整个页面,并覆盖其他组件。
    • <web-view> 网页与小程序之间不支持除 JSSDK 提供的接口之外的通信。
    • 避免在链接中带有中文字符,在 iOS 中会有打开白屏的问题,建议加一下 encodeURIComponent