From fba61e7ef4716fbaccd5ea1cfe2cc22ccb6180ee Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 7 Aug 2020 19:02:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=20core=20components?= =?UTF-8?q?=20=E4=B8=AD=E7=9A=84=E5=B9=B3=E5=8F=B0=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/api/context/create-map-context.js | 22 +++-- src/core/view/components/button/index.vue | 2 +- src/core/view/components/canvas/index.vue | 6 +- src/core/view/components/editor/index.vue | 4 +- src/core/view/mixins/keyboard.js | 92 ++++++++++--------- 5 files changed, 66 insertions(+), 60 deletions(-) diff --git a/src/core/service/api/context/create-map-context.js b/src/core/service/api/context/create-map-context.js index 9c8b9e78a..58c3ddd72 100644 --- a/src/core/service/api/context/create-map-context.js +++ b/src/core/service/api/context/create-map-context.js @@ -1,7 +1,7 @@ import { invokeMethod, getCurrentPageVm -} from '../../platform' +} from '../../platform' import { callback @@ -16,8 +16,8 @@ UniServiceJSBridge.subscribe('onMapMethodCallback', ({ data }) => { callback.invoke(callbackId, data) -}) - +}) + const methods = ['getCenterLocation', 'moveToLocation', 'getScale', 'getRegion', 'includePoints', 'translateMarker'] export class MapContext { @@ -25,18 +25,20 @@ export class MapContext { this.id = id this.pageVm = pageVm } -} - -MapContext.prototype.$getAppMap = function () { - return plus.maps.getMapById(this.pageVm.$page.id + '-map-' + this.id) -} +} + +MapContext.prototype.$getAppMap = function () { + if (__PLATFORM__ === 'app-plus') { + return plus.maps.getMapById(this.pageVm.$page.id + '-map-' + this.id) + } +} methods.forEach(function (method) { - MapContext.prototype[method] = callback.warp(function (options, callbackId) { + MapContext.prototype[method] = callback.warp(function (options, callbackId) { options.callbackId = callbackId operateMapPlayer(this.id, this.pageVm, method, options) }) -}) +}) export function createMapContext (id, context) { if (context) { diff --git a/src/core/view/components/button/index.vue b/src/core/view/components/button/index.vue index bcb0959ac..cfea188fe 100644 --- a/src/core/view/components/button/index.vue +++ b/src/core/view/components/button/index.vue @@ -65,7 +65,7 @@ export default { ) return } - if (this.openType === 'feedback') { + if (this.openType === 'feedback' && __PLATFORM__ === 'app-plus') { const feedback = plus.webview.create( 'https://service.dcloud.net.cn/uniapp/feedback.html', 'feedback', diff --git a/src/core/view/components/canvas/index.vue b/src/core/view/components/canvas/index.vue index 08a1e638c..913a85136 100644 --- a/src/core/view/components/canvas/index.vue +++ b/src/core/view/components/canvas/index.vue @@ -351,17 +351,17 @@ export default { loadBlob(this.response) } } - xhr.onerror = window.plus ? plusDownload : function () { + xhr.onerror = __PLATFORM__ === 'app-plus' ? plusDownload : function () { self._images[src].src = src } xhr.send() } - if (window.plus && (!window.webkit || !window.webkit.messageHandlers)) { + if (__PLATFORM__ === 'app-plus' && (!window.webkit || !window.webkit.messageHandlers)) { self._images[src].src = src } else { // 解决 PLUS-APP(wkwebview)以及 H5 图像跨域问题(H5图像响应头需包含access-control-allow-origin) - if (window.plus && src.indexOf('http://') !== 0 && src.indexOf('https://') !== + if (__PLATFORM__ === 'app-plus' && src.indexOf('http://') !== 0 && src.indexOf('https://') !== 0 && !/^data:.*,.*/.test(src)) { loadFile(src) } else if (/^data:.*,.*/.test(src)) { diff --git a/src/core/view/components/editor/index.vue b/src/core/view/components/editor/index.vue index b7b4cf59a..6ee1ef42d 100644 --- a/src/core/view/components/editor/index.vue +++ b/src/core/view/components/editor/index.vue @@ -226,7 +226,7 @@ export default { return } const script = document.createElement('script') - script.src = window.plus ? './__uniappquill.js' : 'https://unpkg.com/quill@1.3.7/dist/quill.min.js' + script.src = __PLATFORM__ === 'app-plus' ? './__uniappquill.js' : 'https://unpkg.com/quill@1.3.7/dist/quill.min.js' document.body.appendChild(script) script.onload = callback }, @@ -238,7 +238,7 @@ export default { return } const script = document.createElement('script') - script.src = window.plus ? './__uniappquillimageresize.js' : 'https://unpkg.com/quill-image-resize-mp@3.0.1/image-resize.min.js' + script.src = __PLATFORM__ === 'app-plus' ? './__uniappquillimageresize.js' : 'https://unpkg.com/quill-image-resize-mp@3.0.1/image-resize.min.js' document.body.appendChild(script) script.onload = callback }, diff --git a/src/core/view/mixins/keyboard.js b/src/core/view/mixins/keyboard.js index da9405907..1d9916bfc 100644 --- a/src/core/view/mixins/keyboard.js +++ b/src/core/view/mixins/keyboard.js @@ -28,7 +28,7 @@ export default { }, watch: { focus (val) { - if (val && __PLATFORM__ === 'app-plus') { + if (val) { this.showSoftKeybord() } } @@ -49,68 +49,72 @@ export default { } UniViewJSBridge.subscribe('hideKeyboard', this.hideKeyboardTemp) document.addEventListener('click', iosHideKeyboard, false) - if (__PLATFORM__ === 'app-plus') { - this.setSoftinputNavBar() - this.setSoftinputTemporary() - } + this.setSoftinputNavBar() + this.setSoftinputTemporary() }) el.addEventListener('blur', this.onKeyboardHide.bind(this)) }, showSoftKeybord () { - plusReady(() => { - plus.key.showSoftKeybord() - }) + if (__PLATFORM__ === 'app-plus') { + plusReady(() => { + plus.key.showSoftKeybord() + }) + } }, setSoftinputTemporary () { - plusReady(() => { - const currentWebview = plus.webview.currentWebview() - const style = currentWebview.getStyle() || {} - const rect = this.$el.getBoundingClientRect() - currentWebview.setSoftinputTemporary && currentWebview.setSoftinputTemporary({ - mode: style.softinputMode === 'adjustResize' ? 'adjustResize' : (this.adjustPosition ? 'adjustPan' : 'nothing'), - position: { - top: rect.top, - height: rect.height + (Number(this.cursorSpacing) || 0) - } + if (__PLATFORM__ === 'app-plus') { + plusReady(() => { + const currentWebview = plus.webview.currentWebview() + const style = currentWebview.getStyle() || {} + const rect = this.$el.getBoundingClientRect() + currentWebview.setSoftinputTemporary && currentWebview.setSoftinputTemporary({ + mode: style.softinputMode === 'adjustResize' ? 'adjustResize' : (this.adjustPosition ? 'adjustPan' : 'nothing'), + position: { + top: rect.top, + height: rect.height + (Number(this.cursorSpacing) || 0) + } + }) }) - }) + } }, setSoftinputNavBar () { - if (this.showConfirmBar === 'auto') { - delete this.__softinputNavBar - return - } - plusReady(() => { - const currentWebview = plus.webview.currentWebview() - const { softinputNavBar } = currentWebview.getStyle() || {} - const showConfirmBar = softinputNavBar !== 'none' - if (showConfirmBar !== this.showConfirmBar) { - this.__softinputNavBar = softinputNavBar || 'auto' - currentWebview.setStyle({ - softinputNavBar: this.showConfirmBar ? 'auto' : 'none' - }) - } else { + if (__PLATFORM__ === 'app-plus') { + if (this.showConfirmBar === 'auto') { delete this.__softinputNavBar + return } - }) - }, - resetSoftinputNavBar () { - const softinputNavBar = this.__softinputNavBar - if (softinputNavBar) { plusReady(() => { const currentWebview = plus.webview.currentWebview() - currentWebview.setStyle({ - softinputNavBar - }) + const { softinputNavBar } = currentWebview.getStyle() || {} + const showConfirmBar = softinputNavBar !== 'none' + if (showConfirmBar !== this.showConfirmBar) { + this.__softinputNavBar = softinputNavBar || 'auto' + currentWebview.setStyle({ + softinputNavBar: this.showConfirmBar ? 'auto' : 'none' + }) + } else { + delete this.__softinputNavBar + } }) } }, + resetSoftinputNavBar () { + if (__PLATFORM__ === 'app-plus') { + const softinputNavBar = this.__softinputNavBar + if (softinputNavBar) { + plusReady(() => { + const currentWebview = plus.webview.currentWebview() + currentWebview.setStyle({ + softinputNavBar + }) + }) + } + } + }, onKeyboardHide () { UniViewJSBridge.unsubscribe('hideKeyboard', this.hideKeyboardTemp) document.removeEventListener('click', iosHideKeyboard, false) - if (__PLATFORM__ === 'app-plus') { - this.resetSoftinputNavBar() - } + this.resetSoftinputNavBar() // 修复ios端显示与点击位置错位的Bug by:wyq if (String(navigator.vendor).indexOf('Apple') === 0) { document.documentElement.scrollTo(document.documentElement.scrollLeft, document.documentElement.scrollTop) -- GitLab