自定義PC微信掃碼登錄樣式寫法
PC微信掃碼登錄
近期做一個PC端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內(nèi)嵌入產(chǎn)品網(wǎng)頁。本次以內(nèi)嵌二維碼為例,具體怎樣在頁面中顯示一個登陸二維碼,文檔說的很清楚,就不贅述了,文檔地址:https://open.weixin.qq.com/cg...
解決自定義微信二維碼樣式問題
當一切準備妥當之后,網(wǎng)頁上的二維碼初始默認是這個樣子。
特別大不說(默認二維碼大小280x280),還有微信登錄的title,下方也有掃碼登錄的提示。
幸運的是,微信留了一個api給我們自定義樣式的機會,在之前實例化一個二維碼的時候,實例對象中href屬性,允許設置樣式。
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資源轉換為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腳本,復制打印出來的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。
自定義二維碼:
相關文章
javascript中不提供sleep功能如何實現(xiàn)這個功能
javascript中不提供sleep功能,而我們時長會用到這個功能,下面與大家分享個不錯的解決方法,而且在不同的機器上的執(zhí)行速度是一致的2014-05-05js 動態(tài)添加標簽(新增一行,其實很簡單,就是幾個函數(shù)的應用)
把所有代碼拷下另存為一個html文件,在瀏覽器中打開,點擊“新增一行”按鈕就可以,以下是對js函數(shù)的解釋2009-03-03javascript簡寫常用的12個技巧(可以大大減少你的js代碼量)
這篇文章主要跟大家分享了javascript簡寫常用的12個技巧,通過這12個技巧可以大大減少你的js代碼量,看懂一種是入門,全懂就是大神,你能知道幾個呢?需要的朋友們下面跟著小編來一起學習學習下吧。2017-08-08