uniapp app的webview与h5交互操作

这篇具有很好参考价值的文章主要介绍了uniapp app的webview与h5交互操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

app里的webview与h5交互操作,需要在h5页面加点代码,然后才能执行app里的方法
官方地址

uniapp app的webview与h5交互操作在nvue页面里才能实现与h5的交互,设置webview的高度文章来源地址https://www.toymoban.com/news/detail-506390.html

<template>
	<view>
		<view class="nav" :style="{'margin-top':styleObj.top}">
			<view style="width: 130rpx;height: 130rpx;display: flex;align-items: center;flex-direction: row;">
				<image src="/static/images/arrow_left_black.png" @tap="goback" style="width: 44rpx;height: 44rpx;margin-left: 20rpx;"></image>
			</view>
			<text style="font-size: 36rpx;height:36rpx;flex: 1;text-align: center;overflow: hidden;white-space: nowrap;">{{title}}</text>
			<text style="width: 130rpx;"></text>
		</view>
		<web-view :src="path" :style="{'height':styleObj.windowHeight+'px','width':styleObj.windowWidth+'px','top':statusBarHeight+'px'}"></web-view>
	</view>
</template>

<script>
	import {GoLun} from '@/utils/myPublic.js'
	import permision from '@/utils/wa-permission/permission.js'
	export default{
		data(){
			return{
				title:'',
				path:"",
				styleObj:{
					top:'',
					windowWidth:getApp().globalData.mySystemInfo.windowWidth,
					windowHeight:'',
					statusBarHeight:'',
				}
			}
		},
		onLoad(e) {
			let ss = getApp().globalData.mySystemInfo.windowHeight - getApp().globalData.mySystemInfo.statusBarHeight - 40;
			this.styleObj.windowHeight = ss;
			let pp = getApp().globalData.mySystemInfo.statusBarHeight+40;
			this.styleObj.statusBarHeight = pp;
			this.styleObj.top = getApp().globalData.mySystemInfo.statusBarHeight;
			console.log(e)
			let cc = decodeURIComponent(e.dataobj);
			let aa = JSON.parse(cc);
			this.title = aa.title;
			console.log('webview',aa)
			this.path = aa.path;
		},
		methods:{
			goback(){
				uni.navigateBack()
			},
			onPostMessage(e){
				console.log('应用响应',e)
				let data = e.detail.data[0];
				//保存海报
				if(data.action == 'saveImage'){
					this.selectImg(data.shareUrl);
				}
				//邀请好友
				if(data.action == 'share'){
					this.InviteFriends(data)
				}
			},
			//保存海报
			savePoster(url){
				console.log('保存海报',url)
				uni.showLoading({
					title: '图片保存中'
				});
				uni.downloadFile({
					url,
					success: (res) => {
						uni.hideLoading();
						if (res.statusCode === 200) {
							uni.saveImageToPhotosAlbum({
								filePath: res.tempFilePath,
								success: function() {
									uni.showToast({
										title: "保存成功",
										icon: "none"
									});
								},
								fail: function() {
									uni.showToast({
										title: "保存失败,请稍后重试",
										icon: "none"
									});
								}
							});
						}
					},
					fail: (err) => {
						uni.showToast({
							title: "保存失败,请稍后重试",
							icon: "none"
						});
					}
				})
			},
			//手机权限,摄像头和图册
			phoneAuthority(){
				return new Promise(async (rel,rej)=>{
					var platform = getApp().globalData.mySystemInfo.platform;
					if(platform == 'ios'){
						// let camera = permision.judgeIosPermission("camera");//判断ios是否给予摄像头权限
						//ios相册没权限,系统会自动弹出授权框
						let photoLibrary = permision.judgeIosPermission("photoLibrary");//判断ios是否给予相册权限
						if(photoLibrary){
							rel();
						}else{
							rej('请开启相册使用权限');
						}
					}else{
						// let camera = await permision.requestAndroidPermission("android.permission.CAMERA");//判断安卓是否给予摄像头权限
						let photoLibrary = await permision.requestAndroidPermission("android.permission.WRITE_EXTERNAL_STORAGE");//判断安卓是否给予相册写入权限
						// if(camera == -1 || photoLibrary == -1){
						if(photoLibrary == -1){
							rej('请开启相册使用权限');
						}else{
							rel();
						}
					}
				})
			},
			//跳转到手机开启权限的界面
			permissionSetting(){
				permision.gotoAppPermissionSetting();
			},
			//选取图片
			selectImg(url){
				const isIosTrue = uni.getStorageSync('iosFirstCamera');//是不是第一次开启相机
				//ios要先调用一下功能后,设置的权限列表里才会有该权限
				if(getApp().globalData.mySystemInfo.platform == 'ios' && isIosTrue !== 'false'){
					uni.setStorageSync('iosFirstCamera','false');//设为false就代表不是第一次开启相机
					this.savePoster(url)
				}else{
					this.phoneAuthority().then(e =>{
						this.savePoster(url)
					}).catch(e =>{
						console.log(e)
						this.permissionSetting()
					})
				}	
			},
			//邀请好友
			InviteFriends(e){
				let obj = {
					linkUrl:`miniId==${e.userName}&&miniPath==/${e.path}`,
					type:'jumpwxmini'
				}
				console.log('邀请好友',e)
				GoLun(obj)
				.then(res =>{
					console.log('成功')
				})
				.catch(err =>{
					uni.showToast({
						title:'邀请失败',
						icon:'none'
					})
				});
			},
			freeReceive(e){
				console.log('免费领取,更新当前数据',e)
			}
		}
	}
</script>

<style lang="scss">
  .nav{
	  width: 750rpx;
	  height: 40px;
	  display: flex;
	  flex-direction: row;
	  align-items: center;
  }
</style>

到了这里,关于uniapp app的webview与h5交互操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uniapp 之 uniapp app 与uniapp H5的通信 webview,以及处理H5页面的手机物理返回问题

    APP端: 引用 web-view     app给H5传参:通过h5地址传参 这个方法简单,就是直接通过src 地址后面通过 ? 拼接参数 app端 h5端通过uniapp生命周期函数 onLoad 接收参数     app给H5传参:通过方法 evalJS 传参 H5给app传参:通过 web-view 组件的 @message 绑定的方法 处理H5页面的手机物理返

    2024年01月16日
    浏览(49)
  • uniapp 在app和小程序端使用webview进行数据交互

    结论:app端支持比较好可以做到实时传递,微信小程序支持比较差,小程序向url传参只能通过url,url向app传参需要特定时机(后退、组件销毁、分享、复制链接)触发才能收到消息。 以下是代码 app端(需要使用nvue) 微信小程序端(正常vue格式) 3、html端

    2024年02月16日
    浏览(46)
  • uniapp使用webview将页面转换成图片支持h5、app、小程序

    在uniapp项目中新建主页和webview页面 index.vue代码 webview代码 实现效果

    2024年02月05日
    浏览(56)
  • 开发uniapp过程中对app、微信小程序与h5的webview调试

        因为在开发中使用到了webview,因为出现一些问题,所以需要对webview进行跟踪调试,但因为app,h5与微信小程序不一样,所以需要单独说一下。     一、H5     这个比较简单,因为都是在chrome,用F12就可以  二、对微信小程序       因为普通的uniapp页面上都能通过F12可以

    2024年02月11日
    浏览(69)
  • Uniapp中App与H5交互

    Uniapp开发的App要与Uniapp开发的H5进行交互   Uniapp进行数据交互的话是使用了Unaipp官方文档当中的web-view,但是官方文档当中的说明也不是很通俗易懂,之后就去网上找了好久,也试了很多次,终于实现了App与H5的交互。 web-view 首先呢web-view是一个 web 浏览器组件,可以用来承载

    2024年02月08日
    浏览(45)
  • 原生app与uniapp开发的H5交互,H5写法

    一、h5调用原生app方法         1、先判断是安卓系统还是ios系统         2、调用原生app方法     toAppLogin 为调用原生app的方法                 1)   ios环境:window.webkit.messageHandlers.toAppLogin.postMessage();                 2)安卓环境:window.android.toAppLogin(); 二、原

    2024年01月21日
    浏览(45)
  • Apppium driver的一些比较重要操作,原生APP和H5 APP(WEBVIEW)

    //重置app 这时候driver会重置,相当于卸载重装应用。所以本地缓存会失效 driver.reset() //启动app的某一个activity 例如:driver.start_activity(\\\"com.wuba.zhuanzhuan\\\",\\\"./presentation.view.activity.LaunchActivity\\\") //获得所有contexts driver.contexts 结果如下: [\\\'NATIVE_APP\\\', \\\'WEBVIEW_com.android.browser\\\'] NATIVE_APP:na

    2024年02月02日
    浏览(34)
  • h5项目编写成app,你还不了解吗?直接打包和套webview结合uniapp两种实现方式

    在各种需求中 大致有两类 让h5直接运行成app,有一个成熟的h5项目,想直接打包app 不想触发app更新,又能获取最新的更新效果,使用webview套h5,最终生成app 今天笔者带大家粗略实现以上的两个需求 打开hbuiderx 新建项目 选择 5+app 删除其他的多余文件 将自己打包生成的文件进

    2024年02月04日
    浏览(47)
  • Hybird开发,webview和H5交互

    封装一个统一的接口,供H5页面调用原生的功能,比如获取设备信息、打开相机、分享内容等。这样,H5页面只需调用这个接口,而无需关心具体的原生实现细节。 H5端调用: 直接调用API: 为了实现在 H5 页面中传递回调函数给原生代码,我们可以通过另外一种方式:使用随机

    2024年02月17日
    浏览(41)
  • Android与H5交互 -- 点击H5跳转到 Android原生 页面 ,webview与h5(js)交互

    Android与H5交互 app开发过程中,利用原生+h5模式来开发是比较常见的 下面案例演示的是:原生调起一个H5页面,然后H5点击跳转到原生 WebViewActivity页面 调用H5 ,点击H5链接 跳转到原生MainActivity页面 注意 别忘了 !-- 添加网络权限 -- 一、清单文件,增加的配置 data的数据就是H5

    2023年04月14日
    浏览(72)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包