程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

  • uniapp多端开发

    • 快速入门

    • 内置组件

      • 视图容器

      • 基础内容

      • 表单组件

      • 路由页面跳转

      • 媒体组件

      • 地图

      • 画布

      • 网页嵌入

        • 网页嵌入组件
          • 1. 什么是 web-view 组件?
          • 2. web-view 组件的常用属性
            • 2.1 设置 src 属性加载网页
            • 2.2 配置 webview-styles
            • 2.3 使用 postMessage 进行消息通信
          • 3. 加载网页与消息通信
      • 页面属性配置节点

      • nvue组件

      • 小程序组件

    • 扩展组件

  • 小程序开发
  • uniapp多端开发
  • 内置组件
  • 网页嵌入
scholar
2024-10-21
目录

网页嵌入组件

# 网页嵌入组件

web-view 是一个在 Uniapp 中用于承载网页内容的组件,提供了跨平台支持的 web 容器功能。该组件可以在 App、小程序、H5 等平台中使用,支持加载网络网页或本地网页。web-view 会自动铺满整个页面,用户可以通过指定 src 属性来加载目标网页。

# 1. 什么是 web-view 组件?

web-view 组件是一个嵌入网页的容器,允许在 Uniapp 项目中加载并显示外部网页。它支持通过 postMessage 与应用进行消息通信,并且可以配置多种显示样式和事件回调。web-view 在 App 和小程序中有广泛应用,尤其在需要显示外部资源或 H5 页面时非常有用。

使用场景

  • 嵌入外部网页:在应用内嵌入一个外部网站或 H5 页面。
  • 加载本地网页:在 App 中加载本地存储的 HTML 文件。
  • 消息通信:通过 postMessage 机制与嵌入的网页进行双向通信。
  • 显示广告或活动页面:用于在应用中嵌入广告、促销活动等网页内容。

# 2. web-view 组件的常用属性

web-view 组件支持多种属性,用于控制网页加载和样式配置。以下是常用属性的详细说明及使用示例:

属性名 类型 说明 平台差异说明
src String 指定 web-view 加载的网页 URL 全平台支持
allow String 设置 iframe 的特征策略(如允许摄像头、麦克风等) H5
sandbox String 启用额外的安全限制,如禁止脚本执行、禁用插件等 H5
fullscreen Boolean 是否让 web-view 全屏显示,默认 true H5 (HBuilder X 3.5.4+)
webview-styles Object 配置 web-view 的样式,如进度条颜色、宽高等 App-vue
update-title Boolean 是否自动更新网页标题,默认 true App-vue (HBuilder X 3.3.8+)
@message EventHandle 网页向应用发送消息时触发此事件 H5、App、部分小程序平台支持
@load EventHandle 网页加载成功时触发 小程序端
@error EventHandle 网页加载失败时触发 小程序端

# 2.1 设置 src 属性加载网页

  • 说明:通过 src 属性设置 web-view 加载的网页 URL,支持网络链接及 App 端的本地链接。
  • 类型:String
  • 默认值:无
<template>
  <view>
    <!-- 加载外部网页 -->
    <web-view src="https://example.com"></web-view>

    <!-- 加载本地网页 (仅 App 端支持) -->
    <web-view src="/hybrid/html/local.html"></web-view>
  </view>
</template>
1
2
3
4
5
6
7
8
9

# 2.2 配置 webview-styles

  • 说明:通过 webview-styles 配置 web-view 的样式,比如进度条颜色、宽度和高度等。
  • 类型:Object
  • 默认值:无
<template>
  <view>
    <!-- 设置 web-view 样式,包括进度条颜色 -->
    <web-view :webview-styles="webviewStyles" src="https://example.com"></web-view>
  </view>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const webviewStyles = ref({
      progress: { color: '#FF3333' },  // 设置进度条颜色
      width: '100%',                    // 设置 webview 宽度
      height: '500px'                   // 设置 webview 高度
    });

    return { webviewStyles };
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 2.3 使用 postMessage 进行消息通信

  • 说明:通过 postMessage 实现网页与应用之间的双向通信,网页可以向应用发送消息,应用可以接收并处理。
  • 类型:EventHandle
  • 平台差异:H5 暂不支持,可使用 window.postMessage。
<template>
  <view>
    <!-- 通过 message 事件监听网页发送的消息 -->
    <web-view src="https://example.com" @message="handleMessage"></web-view>
  </view>
</template>

<script>
export default {
  setup() {
    const handleMessage = (event) => {
      console.log('接收到网页消息:', event.detail.data);
    }

    return { handleMessage };
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 3. 加载网页与消息通信

以下案例展示了如何使用 web-view 组件加载网页、配置样式和处理消息通信的完整流程。

<template>
  <view>
    <!-- 加载网页并配置样式 -->
    <web-view :webview-styles="webviewStyles" src="https://example.com" @message="handleMessage"></web-view>

    <!-- 加载本地网页 (仅 App 端支持) -->
    <web-view src="/hybrid/html/local.html"></web-view>
  </view>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    // 设置 webview 样式
    const webviewStyles = ref({
      progress: { color: '#FF3333' },  // 进度条颜色
      width: '100%',                   // webview 宽度
      height: '500px'                  // webview 高度
    });

    // 处理网页发送的消息
    const handleMessage = (event) => {
      console.log('接收到网页消息:', event.detail.data);
    }

    return { webviewStyles, handleMessage };
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
编辑此页 (opens new window)
上次更新: 2025/02/01, 02:18:15
画布组件
页面元信息组件

← 画布组件 页面元信息组件→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式