wx-open-subscribe自定义样式和按钮无效【已解决】

news2025/4/18 1:55:26

有一个需求,是在微信公众号中加下类似于小程序的的那个订阅消息弹框,需要用户点击允许才可以给用户推送消息。如下图

在这里插入图片描述
微信官方文档:wx-open-subscribe

官方示例如下:

在这里插入图片描述
这个代码一看也能看明白,<wx-open-subscribe包着,使用说明,官方也大致说了下
在这里插入图片描述

问题出现

我们对照着wx的文档融合进自己的业务,自定义的按钮以及样式。目的是要达到下面这样的效果,点击立即购买,弹出消息订阅弹框
在这里插入图片描述
可是按照微信的文档将自己的样式写进去结果却不是上图中(我们的前端框架是freemarker,并非是vue,网上的很多例子都是vue)
在这里插入图片描述
样式完全错乱,但是按照官方的文档也自检代码没发现问题

第一次自检


<wx-open-subscribe template="DAIkcS0au7ryCPVFXg1-N6CbEz6c6eYNB4I8" id="subscribe-btn" >
        <script type="text/wxtag-template" slot="style">
            <style>
                .paywraper{
                    line-height: 1.3rem;
                    padding-left: 0.3rem;
                    position:fixed;
                    bottom: 0;
                    left: 0;
                    text-align: center;
                    width: 100%;
                    box-shadow: 0 0 0.3rem 0 rgba(0,0,0,.1);
                }
                .bg-fff{
                    background-color: #fff;
                }
                .o-h{
                    overflow: hidden;
                }
                .f-l{
                    float: left;
                }
                .ppvalue{

                }
                .paybtn{
                    background-color: #36d5dd;
                    color: #fff;
                    width: 2.5rem;
                    height: 1.3rem;
                    line-height: 1.3rem;
                }
                .f-r{
                    float: right;
                }
            </style>
        </script>

        <script type="text/wxtag-template">
            <div class="paywraper bg-fff o-h">
                <div class='f-l'>总计: <span style="color: #ff7800;" id="payValue">11</span></div>
                <div class='paybtn f-r' id="payBtn">立即购买</div>
            </div>
        </script>
    </wx-open-subscribe>

刚才有没有注意到,wx官方文档中有个注意点:

在这里插入图片描述
我们的样式中正好也存在这个情况,那么根据这个我们改良如下,将这些布局与定位相关的样式放到标签中或父节点上:

<wx-open-subscribe template="DAIkcS0au7ryCPVFXg1-N6CbEz6c6eYNB4I8" id="subscribe-btn"
                       style="position:fixed; line-height: 1.3rem; bottom: 0; left: 0; text-align: center;
                   width: 100% ; box-shadow: 0 0 0.3rem 0 rgba(0,0,0,.1)">
        <script type="text/wxtag-template" slot="style">
            <style>
                .subscribe-btn2 {
                    color: #ce3c39;
                    background-color: #07c160;
                }
                /*.paywraper{*/
                /*    line-height: 1.3rem !important;*/
                /*    padding-left: 0.3rem !important;*/
                /*    bottom: 0 !important;*/
                /*    left: 0 !important;*/
                /*    text-align: center !important;*/
                /*    width: 100% !important;*/
                /*    box-shadow: 0 0 0.3rem 0 rgba(0,0,0,.1) !important;*/
                /*}*/

                .bg-fff{
                    background-color: #fff !important;
                }
                .o-h{
                    overflow: hidden !important;
                }
                .f-l{
                    float: left !important;
                }
                .ppvalue{
                    color: #ff7800 !important;
                }
                .paybtn{
                    background-color: #36d5dd !important;
                    color: #fff !important;
                    width: 2.5rem !important;
                    height: 1.3rem !important;
                    line-height: 1.3rem !important;
                }
                .f-r{
                    float: right !important;
                }
            </style>
        </script>
        <script type="text/wxtag-template" >
            <div class="paywraper bg-fff o-h">
                <div class='f-l'>总计: <span style="color: #ff7800;" id="payValue">11</span></div>
                <div class='paybtn f-r' id="payBtn">立即购买</div>
            </div>
        </script>
    </wx-open-subscribe>

结果依然不行,在wx社区翻了好多帖子都是千篇一律,解决方案都无效。细心分析下,其实无非有三方面原因:

1、wx标签吞掉了自己的样式

2、某些样式与wx标签不兼容

3、我们使用wx标签不恰当导致样式不对

但是第一点很快排除掉,因为如果吞掉了,那为什么有些css是可以的呢。我一直在第三点上找问题,躺了很多坑,第二点中的不兼容,到底是哪些样式不兼容呢。

后来发现 是rem的问题

rem 是相对单位,表示根元素(html)的字体大小。在 CSS 中,我们可以使用 rem 来设置元素的字体大小、宽度、高度等属性,使其相对于根元素的字体大小进行缩放。

在wx标签中是无效的,所以我们要改成绝对像素的高度宽度即完美解决问题

<wx-open-subscribe
            template="DAIkcS0au7ryCPVFXg1-N6CbEz6c6eYNB4I8"
            id="subscribe-btn"
            class="paywraper bg-fff o-h"
            style="line-height: 1.3rem; padding-left: 0.3rem; position: fixed; bottom: 0; left: 0; text-align: center;
width: 100%; box-shadow: 0 0 0.3rem 0 rgba(0,0,0,.1); background-color: #fff; overflow: hidden;">
        <#--<span class="ppvalue" id="payValue">11</span>-->
        <script type="text/wxtag-template" slot="style">
            <style>
                .f-l{
                    float: left;
                    text-size: 16px ;
                    text-align: center ;
                    line-height: 69px ;
                }
                .ppvalue{
                    color: #ff7800 ;
                    text-size: 16px ;
                }
                .paybtn{
                    background-color: #36d5dd ;
                    color: #fff ;
                    width: 133px ;
                    height: 69px ;
                    line-height: 69px ;
                }
                .f-r{
                    float: right ;
                    text-size: 16px ;
                    text-align: center ;
                }
            </style>
        </script>
        <script type="text/wxtag-template" id="payTemplate">
            <div class="paywraper" id="test2">
                <div class='f-l'>总计: <span class="ppvalue" id="payValue"></span></div>
                <div class='paybtn f-r' id="payBtn">立即购买</div>
            </div>
        </script>
    </wx-open-subscribe>

这里再扩展下,因为现在我的代码中有动态去赋值的,也就是总计,金额,但是由于wx-open-subscribe的标签加入导致js中无法获取其内部id class等

正常的我们用下方代码即可

$("#payValue").text(11)

可是这样不行,那解决方案是什么呢:如下代码,原理是获取标签下的html然后进行解析再二次赋值

        var templateContent = document.getElementById("payTemplate").textContent;
        var parser = new DOMParser();
        var doc = parser.parseFromString(templateContent, 'text/html');
        var payValueElement = doc.getElementById("payValue");
        payValueElement.textContent = 11;
        document.getElementById("payTemplate").textContent = doc.body.innerHTML;

OK 坑已趟完,希望能帮助到各位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】——数据链路层(应用:介质访问控制)

//仅做个人复习和技术交流&#xff0c;图片取自王道考研&#xff0c;侵删 一、大纲 1、介质访问控制 信道划分介质访问控制 随机访问介质访问控制 2、局域网 3、广域网 4、数据链路层设备 二、介质访问控制 省流&#xff1a;把广播信道通过介质访问控制机制 逻辑上转换为 …

Window 10安装MySQL 5.7

1、访问如下链接进行下载&#xff1a;Mysql官方下载地址 官方地址下载的东西没有那么多病毒~。这东西见仁见智吧哈哈~。有些人不怕这个。 注意安装上面这个下面的是test 2、填写mysql的环境变量 具体操作步骤如下&#xff1a; 在桌面按下快捷键“WinR”输入“control sysdm…

JVM内存模型(JMM)

目录 一、运行时数据区域划分 ​编辑 二、线程私有的 1、程序计数器 2、虚拟机栈&#xff08;VM Stack&#xff09; 3、本地方法栈 三、线程公有的 1、堆 2、元空间 Java程序把内存控制权利交给JVM虚拟机&#xff0c;一旦出现内存泄漏和溢出方法的问题&#xff0…

Webpack使用output配置打包代码信息和自动清理打包目录

一、修改代码打包后的文件名 二、自动清理打包目录 如果我们将打包文件名修改再进行打包&#xff0c;会发现之前不同名的打包文件会进行保留 在output对象中配置clean属性可自动清理打包目录 三、指定打包文件的目录 四、指定多个打包文件文件名

爬虫 — 多线程

目录 一、多任务概念二、实现多任务方式1、多进程 &#xff08;Multiprocessing&#xff09;2、多线程&#xff08;Multithreading&#xff09;3、协程&#xff08;Coroutine&#xff09; 三、多线程执行顺序四、多线程的方法1、join()2、setDaemon()3、threading.enumerate() …

npm发布vue3自定义组件库--方法一

npm发布vue3自定义组件库 创建项目 vue create test-ui自定义组件 创建自定义组件&#xff0c;组件名称根据你的需求来&#xff0c;最好一个组件一个文件夹&#xff0c;下图是我的示例。 src/components 组件和你写页面一样&#xff0c;所谓组件就是方便实用&#xff0c;不…

Unity Bolt 实现UI拖拽功能

最近在学习使用Bolt插件实现五代码对UGUI Image元素实现拖拽。先看效果 录制_2023_09_15_17_50_45_29 下面是实现方式介绍&#xff1a; 1&#xff1a;注册RectTransformUtility 在使用Bolt插件实现UI拖拽的功能&#xff0c;需要使用 RectTransformUtility.ScreenPointToLoca…

网络安全深入学习第五课——热门框架漏洞(RCE— Apache Shiro 1.2.4反序列化漏洞)

文章目录 一、序列化和反序列化二、反序列化漏洞原理三、Apache Shiro 1.2.4反序列化漏洞1、漏洞描述&#xff1a;2、漏洞影响的版本3、Shiro反序列化漏洞原理4、工作原理&#xff1a;5、shiro反序列化的特征&#xff1a; 四、Apache Shiro 1.2.4反序列化漏洞手工复现1、使用DN…

做好制造项目管理的5个技巧

制造过程通常由不同的要素组成&#xff0c;如采购材料、与供应商合作、优化生产线效率等。制造商还需要处理库存、物流和分销。 为了确保制造项目在预算范围内按时完成&#xff0c;并且不遗漏任何环节&#xff0c;企业必须建立项目管理流程&#xff0c;以帮助改善组织流程和效…

社区版MyApps低代码平台,免费即刻拥有!

编者按&#xff1a;本文主要介绍了MyApps推出的免费社区版的优势&#xff0c;为企业数字化转型提供了解决方案。立即登录MyApps低代码平台&#xff0c;就能获取永久免费的低代码平台。 1.MyApps社区版的优势 1.1不受限制&#xff0c;畅享自由 无用户限制、无安装限制、全面应用…

使用 Charles 去修改响应信息(真实工作使用场景1)

目录 背景 理论 Breakpoint功能 Map功能 实践 原理 背景 测试过程中&#xff0c;遇到接口透传数据&#xff0c;修改请求中的值可以使用Postman来进行&#xff0c;当业务场景遇到修改响应里的值的时候&#xff0c;就需要借助Charles来进行。 以下将会阐述具体的步…

七天学会C语言-第三天(循环语句)

1. 用 while 语句循环做数学运算&#xff1a; 使用while语句&#xff0c;您可以创建一个循环&#xff0c;它会重复执行一段代码&#xff0c;直到指定的条件不再满足。 例 1&#xff1a; 求 246100。 #include <stdio.h>int main() {int n 1, sum 0, a 2;while (n &…

第六章 关系数据库理论

第六章 关系数据库理论 6.1 问题的提出 关系模式的表示 关系模式由五部分组成&#xff0c;是一个五元组&#xff1a;R&#xff08;U&#xff0c;D&#xff0c;DOM&#xff0c;F&#xff09;。&#xff08;1 关系名R是符号化的元组语义。U为一组属性。D为属性组U中的属性所来自…

K8s的网络——Underlay和Overlay网络

0. 基础知识 1&#xff09;网络7层基础知识 在网络7层协议基础里&#xff0c; 第一层物理链路&#xff1b;第二层是数据链路层&#xff0c;在第一层的基础上引入MAC地址做数据转发。MAC地址在局域网内具有唯一性&#xff0c;主机A发送数据时&#xff0c;会向局域网内进行广播…

idea显示git分支信息(GitToolBox插件)

效果图 说明 本身idea在右下角会有git分支信息&#xff0c;但是显示的当前打开文件的分支信息&#xff0c;并且不够显眼 解决 1、安装插件(GitToolBox插件) 2、修改idea.properties project.tree.structure.show.urlfalse ide.tree.horizontal.default.autoscrollingfalse将…

【数据结构】堆的应用+TOP-K问题+二叉树遍历

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言堆的时间复杂度向下调整算法的时间复杂度向上调整算法的时间复杂度 堆的应用堆排序TOP—K问题链式二叉树二叉树的节点&#xff1a;初始化节…

ThreadLocal线程局部变量

1.原理 ThreadLocal是用来保存当前线程数据的&#xff0c;每一个线程的内部都有一个ThreadLocalMap&#xff0c;当前这个map中存储了以当前ThreadLocal作键&#xff0c;具体的数据作值的一个个Entry对象。 为什么非得以ThreadLocal对象作键呢&#xff1f;因为一个线程可能使用了…

手游联运平台是什么?

手游联运平台是一种服务于手游联运的专业平台&#xff0c;旨在为游戏开发商、发行商和代理商提供联运合作所需的技术、工具和资源。这些平台通常提供以下功能和服务&#xff1a; 游戏接入和管理&#xff1a;允许游戏开发商将他们的游戏接入联运平台&#xff0c;以便发行到不同的…

linux 环境变量详解/etc/proflie

Linux 环境变量是可以在多个文件中进行配置的&#xff0c;如/etc/proflie&#xff0c;/etc/profile.d/*.sh&#xff0c;~/.bashrc&#xff0c;~/.bash_profile等但是这些之间有什么区别呢 bash的运行模式可以分为 login shell 和 non-login shell。 例如&#xff1a;通过终端&a…

【送书活动】强势挑战Java,Kotlin杀回TIOBE榜单Top 20!学Kotlin看哪些书?

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…