自定义PC微信扫码登录样式写法


Posted in Javascript onDecember 12, 2017

PC微信扫码登录

近期做一个PC端微信扫码登录的需求,微信扫码有两种方式,一种是新开一个二维码页面,另一种是内嵌入产品网页。本次以内嵌二维码为例,具体怎样在页面中显示一个登陆二维码,文档说的很清楚,就不赘述了,文档地址:https://open.weixin.qq.com/cg...

解决自定义微信二维码样式问题

当一切准备妥当之后,网页上的二维码初始默认是这个样子。

自定义PC微信扫码登录样式写法

特别大不说(默认二维码大小280x280),还有微信登录的title,下方也有扫码登录的提示。
幸运的是,微信留了一个api给我们自定义样式的机会,在之前实例化一个二维码的时候,实例对象中href属性,允许设置样式。

var obj = new WxLogin({
      id:"login_container", 
      appid: "", 
      scope: "", 
      redirect_uri: "",
      state: "",
      style: "",
      href: "../qrcode.css"//就是这个属性
      });

不幸的是,在href中传入样式文件的地址,会报错。貌似微信为了安全考虑,只允许访问https的资源。于是现在采用第二种解决办法data-url。

通过访问data-url解决样式问题

写一个nodejs,脚本将刚才的css资源转换为data-url。具体代码实现为:

var fs = require('fs');
// function to encode file data to base64 encoded string
function base64_encode(file) {
 // read binary data
 var bitmap = fs.readFileSync(file);
 // convert binary data to base64 encoded string
 return 'data:text/css;base64,'+new Buffer(bitmap).toString('base64');
}
console.log(base64_encode('./qrcode.css'))

运行node脚本,复制打印出来的data-url,然后赋值给刚才的href。

自定义PC微信扫码登录样式写法

var obj = new WxLogin({
      id:"login_container", 
      appid: "", 
      scope: "", 
      redirect_uri: "",
      state: "",
      style: "",
           href:"data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30NCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7d2lkdGg6IDIwMHB4O30NCi5zdGF0dXNfaWNvbiB7ZGlzcGxheTpub25lf
Q0KLmltcG93ZXJCb3ggLnN0YXR1cyB7dGV4dC1hbGlnbjogY2VudGVyO30="//data-url
      });

注意这里的MIME类型,一定要返回text/css。

自定义二维码:

自定义PC微信扫码登录样式写法

Javascript 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
IE下使用cloneNode注意事项分享
Nov 22 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
解决ueditor jquery javascript 取值问题
Dec 30 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
解决vue里碰到 $refs 的问题的方法
Jul 13 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
Angular事件之不同组件间传递数据的方法
Nov 15 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
Sep 11 Javascript
解决vue的过渡动画无法正常实现问题
Oct 31 Javascript
基于模板引擎Jade的应用(详解)
Dec 12 #Javascript
jquery获取transform里的值实现方法
Dec 12 #jQuery
JS排序算法之希尔排序与快速排序实现方法
Dec 12 #Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 #Javascript
详解vue渲染函数render的使用
Dec 12 #Javascript
谈谈vue中mixin的一点理解
Dec 12 #Javascript
Vue集成Iframe页面的方法示例
Dec 12 #Javascript
You might like
PHP校验ISBN码的函数代码
2011/01/17 PHP
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
javascript中常用编程知识
2013/04/08 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
python爬虫之遍历单个域名
2019/11/20 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
法学院毕业生求职信
2014/06/25 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
草房子读书笔记
2015/06/29 职场文书
市级三好生竞选稿
2015/11/21 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
vue elementUI批量上传文件
2022/04/26 Vue.js
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS