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

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

(二)原型模式

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

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...