自定义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 相关文章推荐
js 设置选中行的样式的实现代码
May 24 Javascript
Jquery 选中表格一列并对表格排序实现原理
Dec 15 Javascript
Extjs优化(二)Form表单提交通用实现
Apr 15 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
javascript中一些util方法汇总
Jun 10 Javascript
JS实现自动切换文字的导航效果代码
Aug 27 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
node文字生成图片的示例代码
Oct 26 Javascript
微信小程序switch组件使用详解
Jan 31 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
小程序使用wxs解决wxml保留2位小数问题
Dec 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配置参数总结
2013/06/14 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
javascript canvas检测小球碰撞
2020/04/17 Javascript
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
使用python实现飞机大战游戏
2020/03/23 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
详解python UDP 编程
2020/08/24 Python
《神奇的克隆》教学反思
2014/04/10 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
java基础——多线程
2021/07/03 Java/Android
python实现简单的三子棋游戏
2022/04/28 Python