微信公众号h5写一个全局调用微信分享功能
1. 首先先安装依赖
npm install weixin-js-sdk --save
2. app.vue文件
<script>
export default {
onLaunch: function(e) {},
onShow: function(e) {
console.log('App Show页面初始');
// 路由参数存缓存的 这是为了防止他点击其他页面 这两个id没有了
var querys = this.$route.query; // 路由参数if (querys) {
if (querys.friendId) {
uni.setStorageSync("friendId", querys.friendId)
}
if (querys.partnerId) {
uni.setStorageSync("partnerId", querys.partnerId)
}
}
},
onHide: function() {
console.log('App Hide')
},
mounted() {
// let pages = []
// pages = getCurrentPages();
// console.log(pages, 'pages');
// var redirect_link = pages[pages.length - 1].route;
// this.setWxShare() // 分享传入参数
},
globalData: {
// #ifdef H5
setWxShare: function(redirect_link, id, imgurl) {var merge = require('webpack-merge'); //调用微信集成的方法
let wzhi = window.location.href //获取当前页面路由
this.hi = wzhi.split("#")[0];
// console.log(this.hi, 'this.hi');
var userInfo = uni.getStorageSync("userInfo");let url = "";
var routes1 = ""========这些是因为我们的需求是要带账号的id参数=========
if (userInfo) {
// 有自己的用户信息就说明是老用户 老用户的话就用自己的friendId 删掉带过来的friendId
if (this.hi.indexOf("friendId") != -1) {
// 路由传过来的friendId 截取掉 分享只需要自己的friendId
var routes1 = this.hi.split("friendId")[0];
url = routes1 + "friendId=" + userInfo.userId;} else if (this.hi.indexOf("partnerId") != -1) {
// 路由传过来的partnerId 截取掉 分享只需要friendId
var routes1 = this.hi.split("partnerId")[0];
url = routes1 + "friendId=" + userInfo.userId
} else if (this.hi.indexOf("?") != -1) {
url = this.hi + "&friendId=" + userInfo.userId
} else {
url = this.hi + "?friendId=" + userInfo.userId
}
} else {
// 未登录状态 或者新用户
if (this.hi.indexOf("friendId") != -1) {
routes1 = this.hi.split("&friendId")[0];
url = routes1
} else if (this.hi.indexOf("partnerId") != -1) {
routes1 = this.hi.split("&partnerId")[0];
url = routes1
} else {
url = this.hi
}
}
// 改变路由参数 但是不刷新页面
window.history.replaceState(null, null, url);================不需要的话就删掉=======
url = window.location.href.split("#")[0];//请求接口返回签名
var params = {
url: url
}
this.common.getConfig(params).then(res => {if (res.code == 200) {
var result = res.data;
// console.log(result, "result------------------")
var wxshare = require('jweixin-module'); //调用微信集成的方法
wxshare.config({
debug: false, //是否打开调试
appId: result.appId, // 公众号的唯一标识
timestamp: result.timestamp, // 生成签名的时间戳
nonceStr: result.nonceStr, // ,生成签名的随机串
signature: result.signature, // 签名
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
]
});
wxshare.ready(function() {
//分享给朋友
wxshare.updateAppMessageShareData({
title: "房东直租", // 分享标题
desc: "易租房,好生活,从这里开始", // 分享描述
link: url, // 当前页面链接
imgUrl: "https://home.link-bl.com/static/images/loginLogo.png", //分享图标
success: function() { //分享成功回调
// console.log("分享成功");
},
cancel: function() { //取消分享回调
// console.log("取消分享");
}
});
//分享到朋友圈
wxshare.updateTimelineShareData({
title: "房东直租", // 分享标题
desc: "易租房,好生活,从这里开始", // 分享描述
link: url, // 当前页面链接
imgUrl: "https://home.link-bl.com/static/images/loginLogo.png", // 分享图标
success: function() {
// console.log("分享成功");
},
cancel: function() {
// console.log("取消分享");
}
});
})
}});
}
// #endif
},
methods: {}
}
</script><style>
/*每个页面公共css */
</style>
3. 写一个混入方法 全局混入 穿件一个文件夹mixins 和pages平级 ,再创建一个share.js文件
// share.js
export const share = {
onShow() {
// console.log("全局混入");
// #ifdef H5
let pages = []
pages = getCurrentPages();
if (pages.length > 0) {
// console.log(pages[pages.length - 1].route, 'pages全局混入');
if (pages[pages.length - 1].route != 'pages/houseDetail/houseDetail') {
var redirect_link = pages[pages.length - 1].route;
this.setWxShare(redirect_link) // 分享传入参数
}
}// #endif
},
created() {},
}
4. 在main.js文件中引入
// 引入全局分享
import {
share
} from './mixins/share/share.js'
Vue.mixin(share)
最后大功告成!
相关文章:
微信公众号h5写一个全局调用微信分享功能
1. 首先先安装依赖 npm install weixin-js-sdk --save 2. app.vue文件 <script> export default { onLaunch: function(e) {}, onShow: function(e) { console.log(App Show页面初始); // 路由参数存缓存的 这是为了防止他…...

聊聊精益需求的产生过程
这是鼎叔的第七十八篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》已出版ÿ…...

Linux - 还不懂 gdb 调试器?(调试软件)
前言 当前,我们可以使用 make/makefile 来程序化执行代码文件;可以使用 gcc/g 等编译器来编译代码;可以使用 vim 编辑器来编写代码;其实在 Linux 当中还有一个工具,可以实现调试工作,这个工具就是 -- gdb。…...

Linux:程序地址空间/虚拟地址等相关概念理解
文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么? 程序地址空间 在C和C程序中,一直有一个观点是,程序中的各个变量等都会有一定的地址空间,因此才会有诸如取地址,通过地址访问等操作,那…...

Python之爬虫
目录 HTTP请求HTTP响应获得页面响应伪装用户访问打包数据爬取豆瓣top250 HTTP请求 HTTP:HypertextTransferProtcol 超文本传输协议 1、请求行 POST/user/info?new_usertrue HTTP/1.1#资源了路径user/info 查询参数new_usertrue 协议版本HTTP/1.1 2、请求头 Ho…...

打造自己的前端组件库(奶妈版,超详细)
打造自己的前端组件库 demo是开源的,自己上npm 或者 github 上都能搜到 新建vue项目(sass js vue2) vue create yt-ui 修改文件目录(如下) 修改: 1.src 更名 examples; 2. src/components移动到项目最外层;3.vue.config.js更改入口文件 /…...
6.调制阶数相关
1、调制阶数与峰均比的关系 调制阶数(modulation order)对峰均比(有一定的影响。 峰均比是用于衡量调制信号或波形在幅度上的动态范围的指标。它表示信号的最大峰值与平均功率之间的比值。较高的峰均比可能导致信号在传输或放大过程中出现过…...
Maven多模块管理(转载)
注意:父模块需设定打包方式为pom https://cloud.tencent.com/developer/article/1667275 dependencyManagement 统一管理子类依赖版本 在父类maven中加入,不会继承给子类,只能规定子类的依赖版本,子类加入dependence后无需写入 …...

运维学习CentOS 7进行Nightingale二进制部署
.因为Nightingale需要MySQL保存一些数据,所以可以参考《CentOS 7.6使用mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar安装Mysql 8.0》部署MySQL。 https://github.com/ccfos/nightingale/releases是可以github上下载Nightingale二进制安装包。 https://n9e.github.io/…...

安装Docker
本安装教程参考Docker官方文档,地址如下:https://docs.docker.com/engine/install/centos/ 卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \ docker-client \ docker-client-latest \ docker-common…...

【uniapp/uView】解决消息提示框悬浮在下拉框之上
需要实现这样的效果,即 toast 消息提示框在 popup 下拉框之上: 解决方法,把 <u-toast ref"uToast" /> 放在 u-popup 里面即可,这样就可以提升 toast 的优先级: <!-- 弹出下拉框 --><u-popu…...

有效管理token,充分发挥ChatGPT的能力
目录 给提供了 Token 的计算工具,来理解一下Token的计算方式,网址如下: 窗口如下: 实际消耗 Token 数量为 59个,换算之后为2.1-2.2的比例,即一个汉字消耗2.12.2个Token, 再测一下英文的Token消耗,包含空格在内,一共52个英文字母,消耗Token 13个,正好对应13个单词,…...

Python —— 验证码的处理执行JavaScript语句
1、验证码的处理 1、概述&绕过验证码的方案 很多的网站都在登录页面加入了识别文字,识别图片,拖动拼图的验证码方式来防止爬虫、恶意注册 等,如果是做自动化,需要绕过验证码才能进入下一步操作,那么有4种方案可以…...

MS12_020 3389远程溢出漏洞
1.search ms12_020 搜索ms12_020 2.use auxiliary/scanner/rdp/ms12_020_check 检查是否存在ms12_020漏洞 show options 查看所需参数 set RHOSTS x.x.x.x 设置目标IP地址 run 执行 检测出来有Ms12_020漏洞 3.use auxiliary/dos/windows/rdp/ms12_020_maxchannelids 选择…...
Pytorch ddp切换forward函数 验证ddp是否生效
DDP及其在pytorch中应用 ddp默认调用forward函数,有些模型无法使用forward函数,可以对模型包装一下。 class modelWraper(nn.Module):def __init__(self, model):super().__init__()self.model modeldef forward(self, *args, **kwargs):return self.…...
C++中按引用向函数传递参数
C中按引用向函数传递参数 在参数传递过程中,如果实参与引用参数不匹配,C将生成临时变量。当前,仅当参数为 const 引用时,C才允许这么做,但以前不 是这样。如果引用参数是 const,则编译器将在下面两种情况…...

【Asp.net】Asp.net core中IIS配置注意事项
1、应用地址池设为无托管代码 一、提示:关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误 安装dotnet-hosting-3.1.2-win.exe ASP.NET Core 3.1 Runtime (v3.1.2)下载地址: https://download.visualstudio.microsoft.com/download/pr/dd119832-dc4…...

Redis实现附近商户
GEO数据结构的基本用法 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息…...

【COMP305 LEC 3 LEC 4】
LEC 3 A basic abstract model for a biological neuron 1. Weights of connections Neuron gets fired if it has received from the presynaptic neurons 突触前神经元 a summary impulse 脉冲, which is above a certain threshold. Signal from a single synapse突触 ma…...

国密https访问
前言 现在的SSL的加密算法实际上主要是国际算法,包括JDK,Go等语言也仅支持国际算法加密(毕竟是国外开源项目),hash。随着国密算法的普及,比如openssl就支持国密了,还要新版本的Linux内核也开始…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...