Fork me on GitHub
一共有 58 篇文章,分页:2 / 12

小程序的登录流程

sequenceDiagram 小程序前端->>微信客户端API: wx.login Note over 小程序前端,微信客户端API: 静默进行,不会弹出授权弹窗 微信客户端API->>小程序前端: code 小程序前端->>小程序服务端: code 小程序服务端->>微信服务端API:code appid secret Note over 小程序服务端,微信服务端API: 请求 jscode2session 接口 微信服务端API->>小程序服务端:openid session_key

如果小程序只需要识别用户,而不需要获得用户的昵称等信息,那么整个过程是没有弹窗授权操作的,如果需要进一步获得用户信息,则需要放置下面这个按钮

阅读全文 »»

跨iframe且跨域名之间实时通信的解决方案

如果你在寻找跨标签页通信解决方案请看这篇文章

1、利用postMessage

postMessage的函数原型:

otherWindow.postMessage(message, targetOrigin, [transfer]);

假设页面B(http://parent-frame.org:8080/b.html)嵌套了另一个域名下的页面A(http://frame.org:8080/a.html)

1、子向父发信息:

iframe内的 子页面 A

parent.postMessage("来自子页面的消息", "http://parent-frame.org:8080")

父页面 B

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event) {
  var origin = event.origin
  //验证来源是否可信
  if (origin !== "http://frame.org:8080") {
    return
 }

 //解析事件数据
 //event.data

}
阅读全文 »»

网页跨标签页/跨窗口之间实时通信的解决方案

如果你在寻找跨iframe通信解决方案请看这篇文章

1、使用localStorage的事件机制

页面A

window.localStorage.setItem('sampleList', [1,2,3,4] )

同域名下的页面B

window.addEventListener('storage', () => {    
   console.log(JSON.parse(window.localStorage.getItem('sampleList')));   
 })

推荐一个开源免费的PDF阅读器——SumatraPDF Reader

软件下载地址:https://www.sumatrapdfreader.org/download-free-pdf-viewer.html

开源仓库地址:https://github.com/sumatrapdfreader/sumatrapdf

软件小巧,不需要安装,运行速度快,支持格式多,居家旅行必备

支持以下文件格式:

PDF, eBook (ePub, Mobi), XPS, DjVu, CHM, Comic Book (CBZ and CBR)

标准商品条码校验

目前我国商品条码主要采用 EAN13 标准

js版本

function validateEAN13(barCode){
    if(barCode.length != 13) return false;
    var sum=0;
    var sum1=0;
    for (var i = barCode.length - 2; i >= 0; i--) {
        if( i % 2 != 0 ) sum += Number(barCode.charAt(i));
        if( i % 2 == 0 ) sum1 += Number(barCode.charAt(i));
    }
    var sumN1 = 3*sum + sum1;
    var checkCode = String(((parseInt(sumN1/10)+1)*10-sumN1) % 10);
    return checkCode == barCode.charAt(barCode.length - 1);
}

测试

console.log(validateEAN13('6935570507694'))

golang版本

func validateEAN13(barCode string) bool {
    if len(barCode) != 13 {
        return false
    }
    sum := 0
    sum1 := 0
    for i := len(barCode) - 2; i >= 0; i-- {
        if i%2 != 0 {
            sum += int(barCode[i]) - 48
        }
        if i%2 == 0 {
            sum1 += int(barCode[i]) - 48
        }
    }
    sumN1 := 3*sum + sum1
    checkCode := (((sumN1/10)+1)*10 - sumN1) % 10
    return checkCode == (int(barCode[len(barCode)-1])-48) % 10
}

测试

fmt.Printf("SN is ok? %t", validateEAN13("6935570507694"))