自定义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 相关文章推荐
菜单效果
Oct 14 Javascript
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
微信小程序 框架详解及实例应用
Sep 26 Javascript
Node.js与Sails redis组件的使用教程
Feb 14 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
vue-devtools的安装和使用步骤详解
Oct 17 Javascript
JS精确判断数据类型代码实例
Dec 18 Javascript
js中switch语句的学习笔记
Mar 25 Javascript
JS call()及apply()方法使用实例汇总
Jul 11 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
基于模板引擎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
星际实力自我测试
2020/03/04 星际争霸
第三节 定义一个类 [3]
2006/10/09 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP引用返回用法示例
2016/05/28 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
深入理解JQuery中的事件与动画
2016/05/18 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
js闭包学习心得总结
2018/04/17 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
JS打印彩色菱形的实例代码
2018/08/15 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
python中base64加密解密方法实例分析
2015/05/16 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
django中send_mail功能实现详解
2018/02/06 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
Python eval函数介绍及用法
2020/11/09 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
联片教研活动总结
2014/07/01 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电
Redis实现分布式锁的五种方法详解
2022/06/14 Redis