This time I will bring you the event processing of APP monitoring return in H5. What are the precautions for APP monitoring return event processing in H5. The following is a practical case. Let’s take a look. one time.
When using the MUI framework, we often use a class with .mui-action-back in the header
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">货物查询</h1>
</header>
Copy after login
Click on the return icon of the header to return to Previous page,
//以下是mui.js中的源码,可以看到,在点击返回的时候,内部做了以下的操作
//$.hook={}是专门用于记录浏览的历史的。
$.back = function() {
if (typeof $.options.beforeback === 'function') {
if ($.options.beforeback() === false) {
return;
}
}
$.doAction('backs');
};
$.doAction = function(type, callback) {//返回上一个记录
if ($.isFunction(callback)) { //指定了callback
$.each($.hooks[type], callback);
} else { //未指定callback,直接执行
$.each($.hooks[type], function(index, hook) {
return !hook.handle();
});
}
};
$.addAction = function(type, hook) {//添加历史记录
var hooks = $.hooks[type];
if (!hooks) {
hooks = [];
}
hook.index = hook.index || 1000;
hooks.push(hook);
hooks.sort(function(a, b) {
return a.index - b.index;
});
$.hooks[type] = hooks;
return $.hooks[type];
};
Copy after login
When we encapsulate H5 into an APP, the 5+ interface we use has the concept of webview, which is a window.
At the beginning, I didn't deliberately distinguish between these two concepts, so sometimes I created a new window to open a web page, or sometimes I directly
jumped through the URL, such as: location.href.
This will lead to a situation when monitoring the back button of the mobile phone. The scenario is roughly as follows:
1. Open the software and enter the homepage (main.html=> ;HBuilder[webview]) [The former represents the local access path of the URL, and the latter is the ID of the window webview].
2. Jump to the login interface through location.href instead of opening it by creating a webview.
3. After logging in, enter the function page, press Return again, and return to the login page. The expectation is that after I log in, if I click the return button on my phone, I will log out directly. For this purpose, we specially learned about the rollback function of MUI. We can implement this by overriding this method.
On the page that needs to be monitored:
mui.back=function(){
//写你监听返回键后需要做的操作
Copy after login
However, if we still jump and create windows according to the previous webpage Mixing the two modes will cause unexpected results, that is, mui.back can only be monitored in
entry file, and monitoring done on other pages or forms will not be triggered, and all will be monitored by the entrance. The listening event mui.back of the file is captured, and only the listening business logic of the entry file will be executed. This leads to the embarrassing situation of returning to the previous page without customizing the return event: for example, returning to Login page, and customize return events, it is found that all events are monitored by the entry file. This means that it makes no sense to write mui.back=function(){} on other pages.
If all jump pages are opened as forms, the above problems will not occur. Each window can normally monitor the mui.back custom function
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!
Recommended reading:
Tips for using max-width and min-width
MySQL reset Root in Mac system password
The above is the detailed content of APP listening return event processing in H5. For more information, please follow other related articles on the PHP Chinese website!