uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

news2024/11/24 9:34:19

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

uni-app中监听网络状态

下载插件

打开网络异常组件页面,点击"下载插件并导入HBuilderX"按钮,打开HBuilderX软件后,选择需要导入插件的项目,点击“确定即可”。
在这里插入图片描述
在这里插入图片描述

使用插件

<template>
    <view class="content">
        <mz-network-error @clickFn="hancleClick" message="当前无法连接网络,可检查网络设置是否正常."></mz-network-error>
    </view>
</template>
import mzNetworkError from '@/components/mz-network-error/mz-network-error.vue'
components: {
    mzNetworkError
},
methods: {
    hancleClick() {
        uni.navigateTo({
            url: 'pages/network/index'
        });
    }
}

pages/network/index页面,仿照微信。

<template>
	<view class="main-wrapper">
		<view class="title">
			未能连接到互联网
		</view>
		<view class="subtitle">
			您的设备未启用移动网络或无线局域网
		</view>
		<view class="setting-content">
			<view class="setting-content-title">如需要连接到互联网,请参考以下几点:</view>
			<view class="setting-content-main">检查手机中的无线局域网设置,查看是否有可接入的无线局域网信号。</view>
			<view class="setting-content-main">检查手机是否已接入移动网络,并且手机没有被停机。</view>
		</view>
		<view class="setting-content">
			<view class="setting-content-title">如果您已接入无线局域网:</view>
			<view class="setting-content-main">请检查您所连接的无线局域网热点是否已接入互联网,或该热点是否已允许您的设备访问互联网。</view>
		</view>
	</view>
</template>

<script>
</script>

<style scoped lang="scss">
	.main-wrapper {
		padding: 20rpx 40rpx;
		.title {
			font-size: 40rpx;
			height: 100rpx;
			line-height: 100rpx;
			font-weight: bolder;
		}
		.subtitle {
			font-size: 28rpx;
			padding-bottom: 20rpx;
			margin-bottom: 20rpx;
			border-bottom: 1px solid rgba(151, 151, 151, 0.15);
		}
		.setting-content {
			.setting-content-title {
				font-size: 28rpx;
				margin-bottom: 20rpx;
			}
			.setting-content-main {
				font-size: 28rpx;
				line-height: 44rpx;
				padding-left: 60rpx;
				margin-bottom: 20rpx;
				position: relative;
				&::before {
					content: '';
					position: absolute;
					left: 40rpx;
					top: 20rpx;
					display: inline-block;
					width: 10rpx;
					height: 10rpx;
					border-radius: 50%;
					background: #000;
				}
			}
		}
	}
</style>

效果展示

在这里插入图片描述
在这里插入图片描述

在嵌入webView页面的组件中添加网络监测

修改网络监测组件mz-network-error

当网络状态发生变化时emit相关事件

created() {
	this.isNetworkCanUse(usable => {
		this.show = !usable;
		this.$emit('networkStatus', this.show);
	});
	uni.onNetworkStatusChange(res => {
		this.show = !res.isConnected;
		this.$emit('networkStatus', this.show);
	});
},

修改组件调用

调用网络监测组件mz-network-error 时,绑定networkStatus事件,由于webview会覆盖整个页面,所以需要在监听到网络状态变化时手动修改webview距离顶部的top距离。

<mz-network-error @networkStatus="networkStatusChange" @clickFn="hancleClick"
			message="当前无法连接网络,可检查网络设置是否正常."></mz-network-error>
<script>
	import mzNetworkError from '@/components/mz-network-error/mz-network-error.vue'
	export default {
		components: {
			mzNetworkError
		},
		data() {
			return {
				currentNetworkStatus: true, // true表示网络异常,false表示网络正常
				webviewUrl: "***",
			}
		},
		watch: {
			currentNetworkStatus: {
				handler(newVal) {
					const top = newVal ? 120 : 64;
					this.setWebviewTop(top)
				},
				deep: true,
				immediate: true
			},
		},
		methods: {
			hancleClick() {
				uni.navigateTo({
					url: '/pages/network/index'
				});
			},
			networkStatusChange(show) {
				this.currentNetworkStatus = show
			},
			setWebviewTop(top) {
				// #ifdef APP-PLUS
				var currentWebview = this.$scope.$getAppWebview()
				setTimeout(function() {
					let wv = currentWebview.children()[0]
					wv.setStyle({
						top: top
					})
				}, 1000); //如果是页面初始化调用时,需要延时一下
				// #endif
			},
		}
	}
</script>		

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/893181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web菜鸟入门教程 - Springboot接入认证授权模块

网络安全的重要性不言而喻&#xff0c;如今早已不是以前随便弄个http请求就能爬到数据的时代&#xff0c;而作为一个架构师&#xff0c;网络安全必须在产品开发之初就考虑好。因为在产品开发的后期&#xff0c;一方面是客户增多&#xff0c;压力变大&#xff0c;可供利用的时间…

Java Persistence APl(JPA)——JPA是啥? SpringBoot整合JPA JPA的增删改查 条件模糊查询 多对一查询

目录 引出Jpa是啥&#xff1f;Jpa的使用创建实体类写dao接口类写服务类 crud增删改查增加修改根据id删除全查询分页查询 条件查询模糊查询单条件查询多条件查询模糊查询排序查询 多对一查询定义实体类auto主键策略下新增进行全查询测试 全部代码application.yml配置类pom配置文…

桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?

一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…

18万字应急管理局智慧矿山煤矿数字化矿山技术解决方案WORD

导读&#xff1a;原文《18万字应急管理局智慧矿山煤矿数字化矿山技术解决方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 目 录 第一章 项目概述 1.1项目…

C的进阶C++学习方向

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的…

创建和运行 Ansible 临时命令

创建和运行 Ansible 临时命令 作为系统管理员&#xff0c;您需要在受管节点上安装软件。 请按照正文所述&#xff0c;创建一个名为 /home/curtis/ansible/adhoc.sh 的 shell 脚本&#xff0c;该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库&#xff1a; 存储库…

一次Linux中的木马病毒解决经历(6379端口---newinit.sh)

病毒入侵解决方案 情景 最近几天一直CPU100%,也没有注意看到了以为正常的服务调用,直到腾讯给发了邮件警告说我的服务器正在入侵其他服务器的6379端口,我就是正常的使用不可能去入侵别人的系统的,这是违法的. 排查 既然入侵6379端口,就怀疑是通过我的Redis服务进入的我的系统…

【Linux】Linux工具篇(yum、vim、gcc/g++、gdb、Makefile、git)

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f681; 个人主页&#xff1a;不 良 &#x1f525; 系列专栏&#xff1a;&#x1f6f9;Linux &#x1f6f8;C &#x1f4d5; 学习格言&#xff1a;博观而约取&#xff…

vue3+elementPlus table里添加输入框并提交校验

<template><div><el-form :model"info" ref"forms"><el-tableref"tableRef":data"info.data"border><el-table-column align"center" property"name" label"*姓名"><…

三维模型OSGB格式轻量化技术在大规模场景的加载和渲染的作用分析

三维模型OSGB格式轻量化技术在大规模场景的加载和渲染的作用分析 在移动设备上&#xff0c;大规模场景的加载和渲染是一个不容忽视的问题。对于OSGB格式轻量化处理来说&#xff0c;大规模场景的加载和渲染也是其中一项重要的任务。本文将重点分析OSGB格式轻量化处理在大规模场景…

大语言模型与语义搜索;钉钉个人版启动内测,提供多项AI服务

&#x1f989; AI新闻 &#x1f680; 钉钉个人版启动内测&#xff0c;提供多项AI服务 摘要&#xff1a;钉钉个人版正式开始内测&#xff0c;面向小团队、个人用户、高校大学生等人群。该版本具有AI为核心的功能&#xff0c;包括文生文AI、文生图AI和角色化对话等。用户可通过…

通讯协议043——全网独有的OPC HDA知识一之聚合(十一)持续良好时间

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

Diffusion Probabilistic Priors for Zero-Shot Low-Dose CT Image Denoising

Zero-Shot 低剂量CT图像去噪的扩散概率先验 论文链接&#xff1a;https://arxiv.org/abs/2305.15887 项目链接&#xff1a;https://github.com/DeepXuan/Dn-Dp Abstract 低剂量CT图像去噪是医学图像计算中的一项关键任务。近年来&#xff0c;基于监督的深度学习方法在这一领…

【Windows系统编程】06.HotFixHook与进程通信(详解HotFixHook)

上一讲讲到的InlineHook&#xff0c;每次Hook的时候&#xff0c;都要读写两次内存&#xff08;先Hook&#xff0c;再还原&#xff09;这种Hook方式&#xff0c;性能比较低&#xff0c;今天我们讲的这种Hook方式&#xff0c;可以说是InlineHook的升级版本 HotFix&#xff08;热…

Android性能优化----执行时间优化

作者&#xff1a;lu人皆知 在APP做启动优化时&#xff0c;Application会做一些初始化的工作&#xff0c;但不要在Application中做耗时操作&#xff0c;然而有些初始化工作可能是很耗时的&#xff0c;那怎么办&#xff1f;初始化操作可以开启子线程来完成。 计算执行时间 常规…

Android控件【ProgressBar】

文章目录 常用属性项目结构主要代码 常用属性 max&#xff1a;进度条的最大值progress&#xff1a;进度条已完成进度值indeterminate&#xff1a;如果设置成true&#xff0c;则进度条不精确显示进度style"?android:attr/progressBarStyleHorizontal"&#xff1a;水…

ubuntu 22.04 LTS 在 llvm release/17.x 分支上编译 cookbook llvm example Chapter 02

下载 llvm-cookbook example: $ git clone https://github.com/elongbug/llvm-cookbook.git 开发环境&#xff1a; 从apt source 安装llvm、clang和lldb&#xff1a; $ apt install llvm $ apt install llvm-dev $ apt install clang $ apt install lldb $ cd llvm-cookboo…

c语言生成.exe文件的方法

一、在Windows shell下使用gcc命令 1、需要下载获取GCC安装包 官网:MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net 其他下载: 文件文件大小:48.0 M|https://wwnb.lanzoul.com/iIsq815lktfchttps://download.c

归并排序算法细节演示

【样例输入】 5 11 8 34 2 9 【样例输出】 2 8 9 11 34 #include<iostream> using namespace std; int n;//n个数 int data[100]; int tmp[100]; int nums 1; void ss(){cout<<endl<<"-----------------"<<endl; for(int i1;i<n;i){cou…