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

这篇具有很好参考价值的文章主要介绍了uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

uni-app中监听网络状态

下载插件

打开网络异常组件页面,点击"下载插件并导入HBuilderX"按钮,打开HBuilderX软件后,选择需要导入插件的项目,点击“确定即可”。
uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测,uni-app,uni-app,网络
uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测,uni-app,uni-app,网络

使用插件

<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>

效果展示

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

在嵌入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距离。文章来源地址https://www.toymoban.com/news/detail-662978.html

<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>		

到了这里,关于uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app: onBackPress() 监听页面返回 - 更新数据

    生命周期 - onBackPress() 监听页面返回 函数名 说明 平台差异说明 onBackPress 监听页面返回 ,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:onBackPress 详解。支付宝小程序只有真机

    2024年02月11日
    浏览(41)
  • uni-app 封装 websocket 并且监听心跳机制

    新建 socket.js , 将以下代码复制进去 ,向外暴露。 在入口文件中 将 socketIO 挂载在 Vue 原型上 , 也可以按需引入置顶页面 。 在需要用到webSocket的页面中使用如下方法(可根据自身业务需求进行整改) 离开页面,记得断开连接。

    2024年02月11日
    浏览(35)
  • uni-app微信小程序多种分享事件监听并带参数

    监听用户点击右上角菜单的「复制链接」按钮时触发的事件。 *query:字符串string类型 ‘a=1b=2’ *

    2024年02月15日
    浏览(65)
  • 关于uni-app微信小程序监听顶部左上角的返回事件

    在项目上返回上一级的时候需要清空vuex里的数据,使用了onBackPress无效。 查看官方文档后才发现onBackPress对微信小程序无效。  然后我发现了另一个生命周期——onUnload 完美解决!!!

    2024年02月08日
    浏览(40)
  • uni-app嵌入微信小程序原生代码

    使用uni-app有时需要用到微信小程序原生代码 解析: uni-app项目结构跟原生小程序的项目结构有着不一致的区别,如果说开发过程中必须要使用原生代码,就需要把原生代码作为组件的方式在uni-app项目中引入使用 官网为了应对这一个需求,就给出了以下方法,供开发者实现 wxcompone

    2024年02月05日
    浏览(48)
  • uni-app | 小程序嵌入H5页面实现支付功能

    前一阵在做公司小程序时,有个需要对接支付的功能。但是本着订单数据和支付统一入口的设计原则,计划是对接公司商城现有的支付体系。故本方案是分析对接商城支付几种可行方案以及每种方案的可行性,最后综合选出一种最佳的方案。 实现方式 跳转商城小程序支付 跳

    2024年02月07日
    浏览(48)
  • uni-app去除手机的状态栏(像电量、信号、时间等)

    一、 uni-app自定义导航栏时,导航内容会和手机自带的状态栏相重叠,为了解决这个问题可以这样: 二、uni-app手机进入时配置横/竖屏,可以这样设置:

    2024年02月16日
    浏览(32)
  • uni-app - App 平台内嵌网页物理手机自带返回键失效解决方案(内嵌的 webview 网页 H5 打包后手机物理返回键无效直接退出应用了)

    当您需要打包 App(*.apk) 平台时,发现内嵌的 H5 页面虽然可以正常显示与运行,但是手机的物理返回键却无法使用,当点击手机物理返回按键(或手势)时,直接显示 “再按一次退出应用”,而 并非返回上一个\\\"网页\\\"。 出现这种情况的原因是, 内嵌的网页与您的 App “毫无

    2024年02月09日
    浏览(54)
  • 【UniApp】-uni-app-网络请求

    经过上个章节的介绍,大家可以了解到 uni-app-pinia存储数据的基本使用方法 那本章节来给大家介绍一下 uni-app-网络请求 的基本使用方法 首先我们打开官方文档,我先带着大家看一下官方文档的介绍:https://uniapp.dcloud.net.cn/api/request/request.html 从官方文档中我们可以看到,可以

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包