关于浙里办支付宝不能获取适老化的解决方法

592 阅读2分钟

前言

由于是第一次做浙里办的app,就遇到了很多坑。其中一个就是在支付宝里ZWJSBridge.getUiStyle没有效果,在浙里办和微信浙里办里是正常的。

然后就加浙里办的群问技术人员,都是千篇一律的回答。最后给你一个apidemo,让你去比对代码哪里是否有不对的地方,要么让你用他们的框架写。。。我代码都写完了你跟我说这个??最坑的是每次改完代码都是上传到测试环境,上传慢又慢,真的烦人。

调试

我用的是taro的vue3框架,代码看了半天,也用了调试工具在支付宝里看,只发现了调用ZWJSBridge.onReady没反应,难道是这个原因?于是我想到了一个思路,我把index.html里的js全部注释掉,就用ZWJSBridge.getUiStyle会怎么样。我上传到了测试环境,打开支付宝,WJSBridge.onReady正常了,确实能获取到适老化的信息。难道真的是框架有冲突?

解决方法

最后我想到了一个方法,那就是在ZWJSBridge.onReady之后动态再引入框架的js。 既然框架有冲突,那我就在你onReady之后,获取到UiStyle之后再引入main.js就好了,这下总不可能获取不到了吧。

于是我把build好后的index.html里的代码改了下,把跟框架有关的js在onReady之后在引入进来,上传到了测试环境,打开支付宝,然后确实变适老版了!!!浙里办是真的坑。

webpack插件

然而浙里办是要把代码上传之后再打包的,我就想只要我打包完后通过js把index.html代码修改下,把除了zwjsbridge.js之外的js在onReady之后再引入,那么不管什么js冲突,一定是能获取到适老化的信息的。

虽然我对webpack不熟,但是还是写了一个插件zwjsbridge-ready-plugin。 可以将打包后的html文件里的script标签在zwjsbridge.onReady后执行,避免出现冲突。如果有需要的话可以直接在webpack配置里引入该插件。

结尾

我只能说,浙里办是真的坑。