关于Layabox发布的OPPO小游戏程序出错在谷歌浏览器上无报错的解决方案
问题原因
在本地运行时,程序出错会在浏览器中会通过window.onerror输出错误信息 但在OPPO平台上程序出错时会跳转到底层脚本VM6中的window.qg._onErrorOccurred方法中。 该脚本的错误日志由window.Error中的message提供。但是该方法中的r变量会返回undefined所以导致无法正确输出错误日志。因为e._getFunctionCallbackArray方法中的_cbFunctionArrayMap对象为空,所以e._getFunctionCallbackArray方法无法正确的传回返回值,导致变量r为undefined无法输出错误信息。
解决方法
由于该底层脚本是只读的,所以想要重写window.qg._onErrorOccurred方法是不可行的,但是通过调试发现当该方法运行完成之后还会调用window.qg,onError方法,所以我们只需要在Main中调用window.qg.onError方法并将window.Error保存的错误日志传给它即可 具体代码如下
|