uniapp与webview进行数据通信

server/2024/9/23 9:35:16/

uniapp与webview进行数据通信:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>网络网页</title><style type="text/css">.btn {display: block;margin: 20px auto;padding: 5px;background-color: #007aff;border: 0;color: #ffffff;height: 40px;width: 200px;}.btn-red {background-color: #dd524d;}.desc {padding: 10px;color: #999999;}.post-message-section {visibility: hidden;}</style>
</head><body><div class="post-message-section"><p class="desc">网页向应用发送消息,注意:小程序端应用会在此页面后退时接收到消息。</p><div class="btn-list"><label>账户:</label><input type="text" name="user" required><br><label>密码:</label><input type="text" name="pwd" required><br><div class="post-message-section"><!-- HTML 内容 --><p id="receivedMessage">Received Message Will Appear Here</p></div><br><button class="btn btn-red" type="button" id="postMessage1">跳转1</button><button class="btn btn-red" type="button" id="postMessage2">跳转2</button><button class="btn btn-red" type="button" id="postMessage">postMessage</button><button class="btn btn-red" type="button" id="getMessage">点击获取GetMessage</button><button class="btn btn-red" type="button" id="getMessage">获取相机权限</button></div><p id="receivedMessage"></p></div><script type="text/javascript">var userAgent = navigator.userAgent;if(!/toutiaomicroapp/i.test(userAgent)) {document.querySelector('.post-message-section').style.visibility = 'visible';}</script><!-- uni 的 SDK --><!-- 需要把 uni.webview.1.5.5.js 下载到自己的服务器 --><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script type="text/javascript" src="uni.webview.1.5.5.js"></script><script type="text/javascript">// 待触发 `UniAppJSBridgeReady` 事件后,即可调用 uni 的 API。document.addEventListener('UniAppJSBridgeReady', function () {uni.getEnv(function (res) {console.log('当前环境111:' + JSON.stringify(res));});});
var customKey = 'key'; // 自定义的键值,可以根据需要修改// postMessage参数document.getElementById('postMessage').addEventListener('click', function () {var userValue = document.getElementsByName('user')[0].value;var pwdValue = document.getElementsByName('pwd')[0].value;var deviceInfo = navigator.userAgent; // 获取设备信息// var customValue = 'nnn'; // 自定义的第二个键值var customValue = 'nnn'; // 自定义的第二个键值// 添加自定义的键值对     uniPostMessage(customKey,customValue);  });// 监听postMessage事件// 监听来自 UniApp 的消息document.addEventListener('message', function(event) {console.log('Message received in test.html:', event.data);var receivedMessageElement = document.getElementById('receivedMessage');receivedMessageElement.textContent = 'Received message: ' + event.data;alert('Received message: ' + event.data);});// getMessage参数document.getElementById('getMessage').addEventListener('click', function () {var storage = window.plus.storage;// 获取本地存储 var customKey = 'key'; // 自定义的键值,可以根据需要修改var yourData = storage.getItem(customKey);alert(yourData);return;var parsedData = JSON.parse(yourData);if(parsedData === null) {console.log('本地存储为空');} else {console.log('Data from storage:', yourData);var parsedData = JSON.parse(yourData);document.getElementsByName('user')[0].value = parsedData.data.user || '';document.getElementsByName('pwd')[0].value = parsedData.data.pwd || '';}// 获取所有存储staoragevar keys = plus.storage.getAllKeys();var data = {};// 遍历所有的键,并将键值对添加到对象中keys.forEach(function (key) {var value = window.plus.storage.getItem(key);data[key] = value;});console.log('Data:', JSON.stringify(data));});// 获取传递过来的值console.log('获取数据:',getQuery('data')); //获取 uni-app 传来的值//取url中的参数值function getQuery(name) {// 正则:[找寻'&' + 'url参数名字' = '值' + '&']'&'可以不存在)let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");let r = window.location.search.substr(1).match(reg);console.log('获取到的r值',r);if(r != null) {// 对参数值进行解码return decodeURIComponent(r[2]);}return null;}</script>
</body><script>// 获取按钮父元素var buttonContainer = document.body;// 添加点击事件监听器到父元素buttonContainer.addEventListener("click", function (event) {// 确保点击的是按钮if(event.target.tagName === 'BUTTON') {// 根据按钮ID进行区分if(event.target.id === 'postMessage1') {// 处理按钮1的点击事件console.log("点击了跳转1按钮");// 这里可以添加其他处理逻辑window.location.href = 'jump1.html';} else if(event.target.id === 'postMessage2') {// 处理按钮2的点击事件console.log("点击了跳转2按钮");// 这里可以添加其他处理逻辑}}});
</script></html>

http://www.ppmy.cn/server/120739.html

相关文章

如何创建模板提示prompt

定义模型 from langchain_ollama import ChatOllamallm ChatOllama(base_url"http://ip:11434",model"qwen2",temperature0,tool_choice"auto" )什么是提示模板&#xff1f; 它的目的是根据不同的输入动态生成特定格式的文本&#xff0c;以便…

代码随想录_刷题笔记_第二次

链表 — 环形链表 题目链接&#xff1a;142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c…

【计网】从零开始使用TCP进行socket编程 ---服务端业务模拟Xshell

最糟糕的情况&#xff0c; 不是你出了错&#xff0c; 而是你没有面对出错的勇气。 从零开始使用TCP进行socket编程 1 通信过程的多版本实现1.1 多进程版本1.2 多线程版本 2 服务端业务模拟Xshell2.1 整体框架设计2.2 Command类设计 1 通信过程的多版本实现 在前一篇的文章…

#define定义

1.define定义常量 比如 #define max 100 我们就可以用max来代替100使用了。 #define saying "hello world" 我们就可以使用saying代替"hello,world"使用了 但是要注意的是&#xff0c;我们最好不要在最后面加上分号&#xff0c;有时候容易出错 比如…

在Java中,有没有其他方式可以替代List<Map<String,Object>>来存储和处理数据?

在Java中&#xff0c;有多种方式可以替代List<Map<String, Object>>来存储和处理数据。选择哪种方式取决于你的具体需求&#xff0c;比如数据结构的复杂性、类型安全、性能要求等。以下是一些常见的替代方案&#xff1a; 自定义类&#xff08;POJOs&#xff09;&am…

python基础(1)pyenv安装和对Django使用

pyenv安装 pyenv主要针对类 Unix 系统&#xff08;如 Linux、macOS&#xff09;用户&#xff0c;pyenv-win 是专为 Windows 开发的 pyenv 版本&#xff0c;允许您在不使用 WSL 的情况下管理多个 Python 版本和虚拟环境。 建议Git Bash&#xff1a; Powershell或Git Bash&…

【计算机网络】TCP的可靠传输机制、标记位以及编程结构

文章目录 一、TCP的可靠传输的工作原理1、确认应答机制和捎带应答机制2、超时重传3、快速重传4、滑动窗口5、流量控制 未 PSH6、拥塞控制7、延迟应答8、TCP 以段为单位发送数据 二、TCP 首部的六个标记位1、URG2、ACK3、PSH4、RST5、SYN6、FIN 三、TCP网络并发编程 一、TCP的可…

web网站的任意文件上传下载漏洞解析

免责申明 本文仅是用于学习检测自己搭建的任意文件上传下载漏洞相关原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规内容【…