场景:
当前页面为功能页(属于主页的弹出子页面),点击返回的a标签,就会弹出此错误
连锁现象:
关闭当前子页面后,又建立一个首页(首页是当前子页面的父页面),意外建立多个首页后部分页面事件失效
异常:
TypeError: Cannot read property 'length' of null
15:52.594 4674 4674 I console : at o.f.children (html5plus://ready:37:2303)
15:52.594 4674 4674 I console : at trigger (file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/www/js/mui.js:2217:23)
15:52.594 4674 4674 I console : at file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/www/js/mui.js:2321:6
15:52.594 4674 4674 I console : at o.t.onCallback (html5plus://ready:35:806)
15:52.594 4674 4674 I console : at Object.success (html5plus://ready:4:2028)
15:52.594 4674 4674 I console : at Object.callbackFromNative (html5plus://ready:4:1611)
Uncaught TypeError: Cannot read property 'back' of undefined at html5plus://ready:4
Uncaught TypeError: Cannot read property 'needTouchEvent' of undefined at index.html:1
页面:
<header class="mui-bar mui-bar-nav mui-bar-wh">
<a class="mui-icon mui-icon-left-nav mui-pull-left" href="../index.html"></a>
</header>
首页引用了这个
<script src="html5plus://ready"></script>
脚本:
var self = null;
var opener = null;
mui.plusReady(function() {
mui.ready(function() {
// 获取当前webview
self = plus.webview.currentWebview();
// 获取父页面
opener = self.opener();
plus.key.addEventListener("backbutton",function(){
opener.evalJS('checkLoginStatus()');
self.close();
});
document.querySelector('header a').addEventListener("tap", function(){
opener.evalJS('checkLoginStatus()');
self.close();
});
});
});
虽然问题已经不再出现,但是还有隐患,先列出我的解决方式:
1、样式已经具有mui.back的功能(或者在其他地方定义了a的点击事件),因此将a换成span
2、移除定义backbutton的事件(怀疑是关闭前不移除backbutton事件会报错)
以下是我想使用但不会的解决方式:
1、关闭前终止WebView子页面的进程(怀疑是关闭后继续执行了plus行为)
2、如何判断WebView子页面的进程正在执行(plus行为正在执行)
请问大神这两种方式如何做,跪求,,
0 个回复