diff --git a/src/core/service/bridge/on.js b/src/core/service/bridge/on.js index 308b4a7862d1833a22d2e62a9012ec20f2acc1de..ca2971be25145a022233f256dd55ddeb367ad0c0 100644 --- a/src/core/service/bridge/on.js +++ b/src/core/service/bridge/on.js @@ -6,8 +6,8 @@ import { import { setPullDownRefreshPageId } from 'uni-platform/service/api/ui/pull-down-refresh' - -import onWebInvokeAppService from 'uni-platform/service/on-web-invoke-app-service' + +import onWebInvokeAppService from 'uni-platform/service/on-web-invoke-app-service' export default function initOn (on, { getApp, @@ -91,7 +91,8 @@ export default function initOn (on, { on('onNavigationBarSearchInputChanged', createCallCurrentPageHook('onNavigationBarSearchInputChanged')) on('onNavigationBarSearchInputConfirmed', createCallCurrentPageHook('onNavigationBarSearchInputConfirmed')) - on('onNavigationBarSearchInputClicked', createCallCurrentPageHook('onNavigationBarSearchInputClicked')) - + on('onNavigationBarSearchInputClicked', createCallCurrentPageHook('onNavigationBarSearchInputClicked')) + on('onNavigationBarSearchInputFocusChanged', createCallCurrentPageHook('onNavigationBarSearchInputFocusChanged')) + on('onWebInvokeAppService', onWebInvokeAppService) -} +} diff --git a/src/core/service/plugins/lifecycle.js b/src/core/service/plugins/lifecycle.js index 70b5cf31512a2c4ee302bc517990dc2b9b302180..bdc91a30a2ad233715f02798e096957f2e5f1a89 100644 --- a/src/core/service/plugins/lifecycle.js +++ b/src/core/service/plugins/lifecycle.js @@ -24,6 +24,7 @@ const LIFECYCLE_HOOKS = [ 'onNavigationBarSearchInputChanged', 'onNavigationBarSearchInputConfirmed', 'onNavigationBarSearchInputClicked', + 'onNavigationBarSearchInputFocusChanged', // Component // 'onReady', // 兼容旧版本,应该移除该事件 'onPageShow', @@ -96,4 +97,4 @@ export function lifecycleMixin (Vue) { } return ret } -} +} diff --git a/src/platforms/app-plus-nvue/services/api/title-nview.js b/src/platforms/app-plus-nvue/services/api/title-nview.js index a962c8b9600862df5321fbf684b677aeee1b631f..8f9f9feb0136bbcaf1a532755b9cc8fe6274b6cb 100644 --- a/src/platforms/app-plus-nvue/services/api/title-nview.js +++ b/src/platforms/app-plus-nvue/services/api/title-nview.js @@ -5,7 +5,8 @@ export function initTitleNView (nvue) { onNavigationBarButtonTap: noop, onNavigationBarSearchInputChanged: noop, onNavigationBarSearchInputConfirmed: noop, - onNavigationBarSearchInputClicked: noop + onNavigationBarSearchInputClicked: noop, + onNavigationBarSearchInputFocusChanged: noop } nvue.requireModule('globalEvent').addEventListener('plusMessage', e => { if (eventMaps[e.data.type]) { @@ -19,4 +20,4 @@ export function initTitleNView (nvue) { } }) return ret -} +} diff --git a/src/platforms/app-plus/runtime/wrapper/page-parser.js b/src/platforms/app-plus/runtime/wrapper/page-parser.js index 642764001012904e83e37ce218f54914e2790e60..237e5ea2cb0277a9bf541a3328dbc82295b20058 100644 --- a/src/platforms/app-plus/runtime/wrapper/page-parser.js +++ b/src/platforms/app-plus/runtime/wrapper/page-parser.js @@ -9,13 +9,14 @@ const hooks = [ 'onNavigationBarButtonTap', 'onNavigationBarSearchInputChanged', 'onNavigationBarSearchInputConfirmed', - 'onNavigationBarSearchInputClicked' + 'onNavigationBarSearchInputClicked', + 'onNavigationBarSearchInputFocusChanged' ] -export default function parsePage (vuePageOptions) { +export default function parsePage (vuePageOptions) { const pageOptions = parseBasePage(vuePageOptions) - initHooks(pageOptions.methods, hooks) + initHooks(pageOptions.methods, hooks) return pageOptions -} +} diff --git a/src/platforms/app-plus/service/framework/webview/index.js b/src/platforms/app-plus/service/framework/webview/index.js index 3d5327c639f4f69f5f5bb730d3bbcf9b2896ee3a..70b1b3e66353b3e0ebd5fe15a0903d71581582f4 100644 --- a/src/platforms/app-plus/service/framework/webview/index.js +++ b/src/platforms/app-plus/service/framework/webview/index.js @@ -38,7 +38,8 @@ const WEBVIEW_LISTENERS = { pullToRefresh: 'onPullDownRefresh', titleNViewSearchInputChanged: 'onNavigationBarSearchInputChanged', titleNViewSearchInputConfirmed: 'onNavigationBarSearchInputConfirmed', - titleNViewSearchInputClicked: 'onNavigationBarSearchInputClicked' + titleNViewSearchInputClicked: 'onNavigationBarSearchInputClicked', + titleNViewSearchInputFocusChanged: 'onNavigationBarSearchInputFocusChanged' } export function setPreloadWebview (webview) { @@ -164,4 +165,4 @@ export function consumeWebviewReady (pageId) { const callbacks = webviewReadyCallbacks[pageId] Array.isArray(callbacks) && callbacks.forEach(callback => callback()) delete webviewReadyCallbacks[pageId] -} +} diff --git a/src/platforms/h5/components/page/pageHead.vue b/src/platforms/h5/components/page/pageHead.vue index 92cab37363c197581c85f9877388824a9d20f31b..1834bc13a3de4a5f54c8e885f319f3c250aaba2b 100644 --- a/src/platforms/h5/components/page/pageHead.vue +++ b/src/platforms/h5/components/page/pageHead.vue @@ -509,6 +509,16 @@ export default { }) } }) + input.$refs.input.addEventListener('focus', () => { + UniServiceJSBridge.emit('onNavigationBarSearchInputFocusChanged', { + focus: true + }) + }) + input.$refs.input.addEventListener('blur', () => { + UniServiceJSBridge.emit('onNavigationBarSearchInputFocusChanged', { + focus: false + }) + }) } } },