自定义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 相关文章推荐
jQuery 锚点跳转滚动条平滑滚动一句话代码
Apr 30 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
一起学写js Calender日历控件
Apr 14 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
JavaScript高级函数应用之分时函数实例分析
Aug 03 Javascript
js 实现在2d平面上画8的方法
Oct 10 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 Javascript
在vue中嵌入外部网站的实现
Nov 13 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入门小知识
2008/03/24 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
JS实现标签滚动切换效果
2017/12/25 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
简单了解Django项目应用创建过程
2020/07/06 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
中专毕业生自我鉴定范文
2013/11/09 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
行政答辩状范文
2015/05/21 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
科普 | 业余无线电知识-波段篇
2022/02/18 无线电