123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /**
- * mui back 5+
- * @param {type} $
- * @param {type} window
- * @returns {undefined}
- */
- (function($, window) {
- if ($.os.plus && $.os.android) {
- $.addBack({
- name: 'mui',
- index: 5,
- handle: function() {
- //后续重新设计此处,将back放到各个空间内部实现
- //popover
- if ($.targets._popover && $.targets._popover.classList.contains($.className('active'))) {
- $($.targets._popover).popover('hide');
- return true;
- }
- //offcanvas
- var offCanvas = document.querySelector($.classSelector('.off-canvas-wrap.active'));
- if (offCanvas) {
- $(offCanvas).offCanvas('close');
- return true;
- }
- var previewImage = $.isFunction($.getPreviewImage) && $.getPreviewImage();
- if (previewImage && previewImage.isShown()) {
- previewImage.close();
- return true;
- }
- //popup
- return $.closePopup();
- }
- });
- }
- //首次按下back按键的时间
- $.__back__first = null;
- /**
- * 5+ back
- */
- $.addBack({
- name: '5+',
- index: 10,
- handle: function() {
- if (!window.plus) {
- return false;
- }
- var wobj = plus.webview.currentWebview();
- var parent = wobj.parent();
- if (parent) {
- parent.evalJS('mui&&mui.back();');
- } else {
- wobj.canBack(function(e) {
- //by chb 暂时注释,在碰到类似popover之类的锚点的时候,需多次点击才能返回;
- if (e.canBack) { //webview history back
- window.history.back();
- } else { //webview close or hide
- //fixed by fxy 此处不应该用opener判断,因为用户有可能自己close掉当前窗口的opener。这样的话。opener就为空了,导致不能执行close
- if (wobj.id === plus.runtime.appid) { //首页
- //首页不存在opener的情况下,后退实际上应该是退出应用;
- //首次按键,提示‘再按一次退出应用’
- if (!$.__back__first) {
- $.__back__first = new Date().getTime();
- mui.toast('再按一次退出应用');
- setTimeout(function() {
- $.__back__first = null;
- }, 2000);
- } else {
- if (new Date().getTime() - $.__back__first < 2000) {
- plus.runtime.quit();
- }
- }
- } else { //其他页面,
- if (wobj.preload) {
- wobj.hide("auto");
- } else {
- //关闭页面时,需要将其打开的所有子页面全部关闭;
- $.closeAll(wobj);
- }
- }
- }
- });
- }
- return true;
- }
- });
- $.menu = function() {
- var menu = document.querySelector($.classSelector('.action-menu'));
- if (menu) {
- $.trigger(menu, $.EVENT_START); //临时处理menu无touchstart的话,找不到当前targets的问题
- $.trigger(menu, 'tap');
- } else { //执行父窗口的menu
- if (window.plus) {
- var wobj = $.currentWebview;
- var parent = wobj.parent();
- if (parent) { //又得evalJS
- parent.evalJS('mui&&mui.menu();');
- }
- }
- }
- };
- var __back = function() {
- $.back();
- };
- var __menu = function() {
- $.menu();
- };
- //默认监听
- $.plusReady(function() {
- if ($.options.keyEventBind.backbutton) {
- plus.key.addEventListener('backbutton', __back, false);
- }
- if ($.options.keyEventBind.menubutton) {
- plus.key.addEventListener('menubutton', __menu, false);
- }
- });
- //处理按键监听事件
- $.addInit({
- name: 'keyEventBind',
- index: 1000,
- handle: function() {
- $.plusReady(function() {
- //如果不为true,则移除默认监听
- if (!$.options.keyEventBind.backbutton) {
- plus.key.removeEventListener('backbutton', __back);
- }
- if (!$.options.keyEventBind.menubutton) {
- plus.key.removeEventListener('menubutton', __menu);
- }
- });
- }
- });
- })(mui, window);
|