小程序使用jsencrypt加密,报Uncaught TypeError: Cannot read property ‘appName‘ of undefined问题

修改后的jsencrypt.js文件

详细解释

  • 源码
if (j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
   BigInteger.prototype.am = am2;
   dbits = 30;
} else if (j_lm && (navigator.appName != "Netscape")) {
   BigInteger.prototype.am = am1;
   dbits = 26;
} else { // Mozilla/Netscape seems to prefer am3
   BigInteger.prototype.am = am3;
   dbits = 28;
}
  • navigator主要是对浏览器的判断,同时小程序中没有appName,直接删除或者保留最后一个else即可。这个解决后还会有其他的问题按照报错做兼容处理即可
BigInteger.prototype.am = am3;
dbits = 28;
  • 兼容window.crypto
if (window.crypto && window.crypto.getRandomValues) {
 // Extract entropy (2048 bits) from RNG if available
 var z = new Uint32Array(256);
 window.crypto.getRandomValues(z);
 for (t = 0; t < z.length; ++t) {
   rng_pool[rng_pptr++] = z[t] & 255;
 }
}
  • 注释上面代码改为下方代码
var getRandomValues = function (array) {
 for (var i = 0, l = array.length; i < l; i++) {
   array[i] = Math.floor(Math.random() * 256);
 }    return array;
}
var z = new Uint32Array(256);
getRandomValues(z);
  • 兼容window.removeEventListener、window.detachEvent,window.addEventListener,window.attachEvent直接将所有的监听事件注释即可
if (window.removeEventListener) {
 window.removeEventListener("mousemove", onMouseMoveListener_1, false);
}
else if (window.detachEvent) {
 window.detachEvent("onmousemove", onMouseMoveListener_1);
}
if (window.addEventListener) {
       window.addEventListener("mousemove", onMouseMoveListener_1, false);
   }
   else if (window.attachEvent) {
       window.attachEvent("onmousemove", onMouseMoveListener_1);
   }
  • JSEncrypt对象不存在,直接注释即可
window.JSEncrypt = JSEncrypt
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值