当前位置: 首页 > 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内核也开始…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架

1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...