详细问题描述
iOS侧滑返回是隐藏Webview窗口的情况能够正确触发hide事件,但iOS侧滑返回是关闭Webview窗口的情况却不触发close事件。
重现步骤
在首页点击 “页面1” 打开一个新窗口(该窗口的侧滑返回动作是hide隐藏窗口),然后侧滑返回能正确触发webview的hide事件;
在首页点击 “页面2” 打开一个新窗口(该窗口的侧滑返回动作是close关闭窗口),然后侧滑返回则不会触发webview的close事件(问题就在于此,不会触发close事件)。
index.html
<button onclick="toPage1()">页面1(iOS侧滑返回隐藏webview窗口)</button>
<button onclick="toPage2()">页面2(iOS侧滑返回关闭Webview窗口)</button>
<script>
var webviewStyle = {
titleNView: {
titleColor: '#FFFFFF',
backgroundColor: '#2DAF5A',
autoBackButton: true
}
};
function toPage1(){
webviewStyle.popGesture = 'hide'; //侧滑返回隐藏webview窗口
webviewStyle.titleNView.titleText='页面1(iOS下)';
var webview = plus.webview.create('page1.html', 'page1.html', webviewStyle);
webview.show('pop-in');
}
function toPage2(){
webviewStyle.popGesture = 'close'; //侧滑返回关闭Webview窗口
webviewStyle.titleNView.titleText='页面2(iOS下)';
var webview = plus.webview.create('page2.html', 'page2.html', webviewStyle);
webview.show('pop-in');
}
</script>
page1.html
<script>
document.addEventListener('plusready', function() {
plus.webview.currentWebview().addEventListener('hide', function() {
console.log('窗口隐藏...');//当侧滑返回隐藏该窗口,这里正确触发
}, false);
plus.key.addEventListener('backbutton', function() {
plus.webview.currentWebview().hide('auto');
}, false);
});
</script>
page2.html
<script>
document.addEventListener('plusready', function() {
plus.webview.currentWebview().addEventListener('close', function() {
console.log('窗口关闭...'); //当侧滑返回关闭该窗口,这里不会触发
}, false);
plus.key.addEventListener('backbutton', function() {
plus.webview.currentWebview().close('auto'); //点击左上角的返回箭头关闭该窗口时能正确触发 close 事件
}, false);
});
</script>
运行环境
Hbuilder 9.0.1以及先前的版本
哲 (作者)
我不那么认为,监听popGesture事件与触发hide事件和close事件是两码事,首先我认为,只要窗口被close了那就必须触发close事件,只要窗口被hide了那就必须触发hide事件。
现在的问题是侧滑返回是hide窗口的情况能够触发hide事件,而侧滑返回是close窗口的情况却不能够触发close事件,这不符合常理啊
2018-03-05 16:06
哲 (作者)
而目前临时的解决方式只能这样
var popGestureFlag = false;
plus.webview.currentWebview().addEventListener('popGesture', function() {
if(!popGestureFlag) {
popGestureFlag = true;
//执行具体的操作
}
});
监听 popGesture 事件会根据你侧滑动作的快慢触发N次
2018-03-05 16:10
回梦無痕
回复 哲:监听popGesture有点复杂。因为有时候用户只是侧滑了一下,但并没有把页面滑到关闭,这个时候也会触发。
2018-03-05 16:36