自定义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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
增强的 JavaScript 的 trim 函数的代码
Aug 13 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
javascript页面动态显示时间变化示例代码
Dec 18 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
跟我学习javascript的全局变量
Nov 16 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
PHP教程 基本语法
2009/10/23 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
关于js内存泄露的一个好例子
2013/12/09 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
domReady的实现案例
2016/11/23 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Flask框架信号用法实例分析
2018/07/24 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
实例讲解python中的序列化知识点
2018/10/08 Python
Python中的取模运算方法
2018/11/10 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
四种会话跟踪技术
2015/05/20 面试题
幼儿园标语大全
2014/06/19 职场文书
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技