diff --git a/src/platforms/app-plus/service/api/plugin/restore-global.js b/src/platforms/app-plus/service/api/plugin/restore-global.js index fa0902c6ad2269084cf71f07a05ed8f24155bf97..25d47c5621ed25d1bbf63aaf89f5e78e467a0a82 100644 --- a/src/platforms/app-plus/service/api/plugin/restore-global.js +++ b/src/platforms/app-plus/service/api/plugin/restore-global.js @@ -1,3 +1,7 @@ +import { + newSetStatusBarStyle +} from '../../bridge' + export function restoreGlobal ( newWeex, newPlus, @@ -15,7 +19,8 @@ export function restoreGlobal ( console.log(`[restoreGlobal][${Date.now()}]`) } weex = newWeex - plus = newPlus + plus = newPlus + plus.navigator.setStatusBarStyle = newSetStatusBarStyle /* eslint-disable no-global-assign */ setTimeout = newSetTimeout clearTimeout = newClearTimeout diff --git a/src/platforms/app-plus/service/bridge.js b/src/platforms/app-plus/service/bridge.js index 13b8fbebb4dd9fb30e1cd846547eda649dabe3d7..dc75ccc5457732f5b6bc3d0b64e8eba5d6f57bd7 100644 --- a/src/platforms/app-plus/service/bridge.js +++ b/src/platforms/app-plus/service/bridge.js @@ -21,14 +21,16 @@ export function publish (name, ...args) { return UniServiceJSBridge.emit('api.' + name, ...args) } -let lastStatusBarStyle +export let lastStatusBarStyle const oldSetStatusBarStyle = plus.navigator.setStatusBarStyle -plus.navigator.setStatusBarStyle = function (style) { +export function newSetStatusBarStyle(style) { lastStatusBarStyle = style oldSetStatusBarStyle(style) -} +} + +plus.navigator.setStatusBarStyle = newSetStatusBarStyle export function setStatusBarStyle (statusBarStyle) { if (!statusBarStyle) { diff --git a/src/platforms/app-plus/service/framework/webview/on-webview-pop-gesture.js b/src/platforms/app-plus/service/framework/webview/on-webview-pop-gesture.js index 2e6856664c26ea44f3b80aa975008bdfd1002dde..e883fcab000a4c5efe3d230c9b4a2ba977601cb4 100644 --- a/src/platforms/app-plus/service/framework/webview/on-webview-pop-gesture.js +++ b/src/platforms/app-plus/service/framework/webview/on-webview-pop-gesture.js @@ -1,17 +1,20 @@ -import { +import { + lastStatusBarStyle, setStatusBarStyle } from '../../bridge' -export function onWebviewPopGesture (webview) { +export function onWebviewPopGesture (webview) { + let popStartStatusBarStyle webview.addEventListener('popGesture', e => { if (e.type === 'start') { // 设置下一个页面的 statusBarStyle const pages = getCurrentPages() - const page = pages[pages.length - 2] + const page = pages[pages.length - 2] + popStartStatusBarStyle = lastStatusBarStyle const statusBarStyle = page && page.$page.meta.statusBarStyle statusBarStyle && setStatusBarStyle(statusBarStyle) } else if (e.type === 'end' && !e.result) { // 拖拽未完成,设置为当前状态栏前景色 - setStatusBarStyle() + setStatusBarStyle(popStartStatusBarStyle) } else if (e.type === 'end' && e.result) { const pages = getCurrentPages() const page = pages[pages.length - 1]