uniapp使用webview打开自定义的动态网页

项目场景:

在uniapp的安卓端,跳转银联支付网页操作,每个用户参数都不一致,需要请求后端实时生成

解决方案:

前端请求网页html标签,将网页在本地生成html文件并用webview打开本地网页

提示:结尾的script标签前需要加 / 否则会打不开

<!-- #ifdef APP-PLUS -->
<template>
	<view>
		<web-view src="_doc/static/html.html"></web-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				data: `<html><head><meta http-equiv='Content-Type'content='text/html;charset=utf-8'/></head>
				<body><form method='post' accept-charset='UTF-8'>
				<input/>
				</body><script type='text/javascript'><\/script></html>
				`
			}
		},
		onLoad() {
			this.saveServerDatatoFile('html',this.data)
		},
		methods: {
			saveServerDatatoFile(filename, jsonData) { //jsonData要求是String格式
				plus.io.requestFileSystem(plus.io.PRIVATE_DOC,
					function(fs) {
						//fs.root 是根目录操作对象
						fs.root.getDirectory("uniapp_data", {//创建一个文件夹名为uniapp_data
							create: true,
							exclusive: false
						}, function(dir) {
							//console.log("Directory Entry Name: " + dir.name);
							dir.getFile(filename + ".html", { //在uniapp_data文件夹中创建一个json文件
									create: true
								},
								function(fileEntry) {
									fileEntry.file(function(file) {
										//写入文件
										fileEntry.createWriter(
											function(writer) {
												// writer.onwritestart = function(e) {
												// 	console.log("写入数据开始");
												// }
												writer.onwrite = function(e) {
													console.log("写入数据成功");
												}
												//定位至文件结尾,即每次都是追加内容
												//writer.seek(writer.length);
												//定位至开头,即每次都是重写文件。(默认)
												//writer.seek(0);
												writer.write(jsonData);
											},
											function(error) {
												console.log("创建Writer失败" + error.message);
											});
			 
										// var fileReader = new plus.io.FileReader();
										// console.log("getFile:" + JSON.stringify(file));
										// fileReader.readAsText(file, 'utf-8');
										// fileReader.onloadend = function(evt) {
										// 	console.log("11" + JSON.stringify(evt));
										// 	console.log("evt.target" + JSON.stringify(evt.target));
										// 	console.log("evt.target.result" + JSON.stringify(evt.target.result));
										// }
									});
								},
								function(err) {
									console.log("访问File失败" + err.message);
								})
						}, function() {
							console.log("创建uniapp_data目录失败" + err.message);
						});
					},
					function(error) {
						console.log("访问_DOC目录失败" + error.message);
					});
			}
		}
	}
</script>

<style>

</style>
<!-- #endif -->

关于html5的io操作

https://www.html5plus.org/doc/zh_cn/io.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值