自定义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 相关文章推荐
Javascript load Page,load css,load js实现代码
Mar 31 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 Javascript
Vue精简版风格概述
Jan 30 Javascript
微信小程序实现刷脸登录
May 25 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
对layui中table组件工具栏的使用详解
Sep 19 Javascript
vue2.x数组劫持原理的实现
Apr 19 Javascript
详解Vue中的watch和computed
Nov 09 Javascript
解决vue项目中出现Invalid Host header的问题
Nov 17 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中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
loading动画特效小结
2017/01/22 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python中执行shell的两种方法总结
2017/01/10 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python中的二维列表实例详解
2018/06/19 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
"火柴棍式"程序员面试题
2014/03/16 面试题
什么是TCP/IP
2014/07/27 面试题
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
抗震救灾标语
2014/06/26 职场文书
党员个人对照检查材料
2014/10/01 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript