自定義PC微信掃碼登錄樣式寫法
PC微信掃碼登錄
近期做一個PC端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內(nèi)嵌入產(chǎn)品網(wǎng)頁。本次以內(nèi)嵌二維碼為例,具體怎樣在頁面中顯示一個登陸二維碼,文檔說的很清楚,就不贅述了,文檔地址:https://open.weixin.qq.com/cg...
解決自定義微信二維碼樣式問題
當一切準備妥當之后,網(wǎng)頁上的二維碼初始默認是這個樣子。

特別大不說(默認二維碼大小280x280),還有微信登錄的title,下方也有掃碼登錄的提示。
幸運的是,微信留了一個api給我們自定義樣式的機會,在之前實例化一個二維碼的時候,實例對象中href屬性,允許設(shè)置樣式。
var obj = new WxLogin({
id:"login_container",
appid: "",
scope: "",
redirect_uri: "",
state: "",
style: "",
href: "../qrcode.css"http://就是這個屬性
});
不幸的是,在href中傳入樣式文件的地址,會報錯。貌似微信為了安全考慮,只允許訪問https的資源。于是現(xiàn)在采用第二種解決辦法data-url。
通過訪問data-url解決樣式問題
寫一個nodejs,腳本將剛才的css資源轉(zhuǎn)換為data-url。具體代碼實現(xiàn)為:
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腳本,復(fù)制打印出來的data-url,然后賦值給剛才的href。

var obj = new WxLogin({
id:"login_container",
appid: "",
scope: "",
redirect_uri: "",
state: "",
style: "",
href:"data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30NCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7d2lkdGg6IDIwMHB4O30NCi5zdGF0dXNfaWNvbiB7ZGlzcGxheTpub25lf
Q0KLmltcG93ZXJCb3ggLnN0YXR1cyB7dGV4dC1hbGlnbjogY2VudGVyO30="http://data-url
});
注意這里的MIME類型,一定要返回text/css。
自定義二維碼:

相關(guān)文章
JS生態(tài)系統(tǒng)加速npm腳本優(yōu)化及性能分析探索
這篇文章主要為大家介紹了JS生態(tài)系統(tǒng)加速npm腳本優(yōu)化及性能分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
純html+css+javascript實現(xiàn)樓層跳躍式的頁面布局(實例代碼)
這篇文章主要介紹了純html+css+javascript實現(xiàn)樓層跳躍式的頁面布局,需要的朋友可以參考下2017-10-10
使用JavaScript在html文檔內(nèi)添加新的元素節(jié)點
這篇文章主要介紹了使用JavaScript在html文檔內(nèi)添加新的元素節(jié),主要打方式就是動態(tài)的改變原有html文檔結(jié)構(gòu),下文詳細介紹內(nèi)容需要的可以參考一下2022-02-02
javascript function調(diào)用時的參數(shù)檢測常用辦法
js中并不直接支持類似c#的方法重載,所以只能變相的來解決,示意代碼:(利用了內(nèi)置屬性arguments)2010-02-02

