自定义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 相关文章推荐
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
Jan 07 Javascript
YUI的Tab切换实现代码
Apr 11 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
Apr 20 Javascript
node.js适合游戏后台开发吗?
Sep 03 Javascript
理解JavaScript表单的基础知识
Jan 25 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
Dec 23 Javascript
教你如何用node连接redis的示例代码
Jul 12 Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 Javascript
Js数组扁平化实现方法代码总汇
Nov 11 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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
ThinkPHP采用模块和操作分析
2011/04/18 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
Yii快速入门经典教程
2015/12/28 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python中pillow知识点学习
2018/04/30 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
中专生毕业个人鉴定
2014/02/26 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
golang使用map实现去除重复数组
2022/04/14 Golang