当前位置: 首页 > news >正文

微信公众号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页面初始); // 路由参数存缓存的 这是为了防止他…...

聊聊精益需求的产生过程

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

Linux - 还不懂 gdb 调试器?(调试软件)

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

Linux:程序地址空间/虚拟地址等相关概念理解

文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么&#xff1f; 程序地址空间 在C和C程序中&#xff0c;一直有一个观点是&#xff0c;程序中的各个变量等都会有一定的地址空间&#xff0c;因此才会有诸如取地址&#xff0c;通过地址访问等操作&#xff0c;那…...

Python之爬虫

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

打造自己的前端组件库(奶妈版,超详细)

打造自己的前端组件库 demo是开源的&#xff0c;自己上npm 或者 github 上都能搜到 新建vue项目(sass js vue2) vue create yt-ui 修改文件目录(如下) 修改&#xff1a; 1.src 更名 examples; 2. src/components移动到项目最外层&#xff1b;3.vue.config.js更改入口文件 /…...

6.调制阶数相关

1、调制阶数与峰均比的关系 调制阶数&#xff08;modulation order&#xff09;对峰均比&#xff08;有一定的影响。 峰均比是用于衡量调制信号或波形在幅度上的动态范围的指标。它表示信号的最大峰值与平均功率之间的比值。较高的峰均比可能导致信号在传输或放大过程中出现过…...

Maven多模块管理(转载)

注意&#xff1a;父模块需设定打包方式为pom https://cloud.tencent.com/developer/article/1667275 dependencyManagement 统一管理子类依赖版本 在父类maven中加入&#xff0c;不会继承给子类&#xff0c;只能规定子类的依赖版本&#xff0c;子类加入dependence后无需写入 …...

运维学习CentOS 7进行Nightingale二进制部署

.因为Nightingale需要MySQL保存一些数据&#xff0c;所以可以参考《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官方文档&#xff0c;地址如下&#xff1a;https://docs.docker.com/engine/install/centos/ 卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \ docker-client \ docker-client-latest \ docker-common…...

【uniapp/uView】解决消息提示框悬浮在下拉框之上

需要实现这样的效果&#xff0c;即 toast 消息提示框在 popup 下拉框之上&#xff1a; 解决方法&#xff0c;把 <u-toast ref"uToast" /> 放在 u-popup 里面即可&#xff0c;这样就可以提升 toast 的优先级&#xff1a; <!-- 弹出下拉框 --><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、概述&绕过验证码的方案 很多的网站都在登录页面加入了识别文字&#xff0c;识别图片&#xff0c;拖动拼图的验证码方式来防止爬虫、恶意注册 等&#xff0c;如果是做自动化&#xff0c;需要绕过验证码才能进入下一步操作&#xff0c;那么有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函数&#xff0c;有些模型无法使用forward函数&#xff0c;可以对模型包装一下。 class modelWraper(nn.Module):def __init__(self, model):super().__init__()self.model modeldef forward(self, *args, **kwargs):return self.…...

C++中按引用向函数传递参数

C中按引用向函数传递参数 在参数传递过程中&#xff0c;如果实参与引用参数不匹配&#xff0c;C将生成临时变量。当前&#xff0c;仅当参数为 const 引用时&#xff0c;C才允许这么做&#xff0c;但以前不 是这样。如果引用参数是 const&#xff0c;则编译器将在下面两种情况…...

【Asp.net】Asp.net core中IIS配置注意事项

1、应用地址池设为无托管代码 一、提示&#xff1a;关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误 安装dotnet-hosting-3.1.2-win.exe ASP.NET Core 3.1 Runtime (v3.1.2)下载地址&#xff1a; https://download.visualstudio.microsoft.com/download/pr/dd119832-dc4…...

Redis实现附近商户

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

【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的加密算法实际上主要是国际算法&#xff0c;包括JDK&#xff0c;Go等语言也仅支持国际算法加密&#xff08;毕竟是国外开源项目&#xff09;&#xff0c;hash。随着国密算法的普及&#xff0c;比如openssl就支持国密了&#xff0c;还要新版本的Linux内核也开始…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

基于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 注意&#xff1a;运行前…...