From dadad2033745fff7e7dfedfe9e1112037e932b0b Mon Sep 17 00:00:00 2001 From: qiang Date: Tue, 22 Sep 2020 15:10:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20App=E3=80=81H5=20=E7=AB=AF=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=20CanvasContext.measureText=20=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/service/api/context/canvas.js | 34 ++++------------------- src/core/view/components/canvas/index.vue | 16 ----------- 2 files changed, 6 insertions(+), 44 deletions(-) diff --git a/src/core/service/api/context/canvas.js b/src/core/service/api/context/canvas.js index 2cf64fa65..4b5ff427c 100644 --- a/src/core/service/api/context/canvas.js +++ b/src/core/service/api/context/canvas.js @@ -328,38 +328,16 @@ export class CanvasContext { } } - measureText (text, callback) { + measureText (text) { const font = this.state.font + let width if (__PLATFORM__ === 'h5') { - const width = measureText(text, font) - const textMetrics = new TextMetrics(width) - if (typeof callback === 'function') { - setTimeout(() => callback(textMetrics), 0) - } - return textMetrics + width = measureText(text, font) } else { - let textMetrics = new TextMetrics(0) - if (typeof callback === 'function') { - const callbackId = canvasEventCallbacks.push(function ({ width }) { - callback(new TextMetrics(width)) - }) - operateCanvas(this.id, this.pageId, 'measureText', { - text, - font, - callbackId - }) - } else { - const webview = plus.webview.getWebviewById(String(this.pageId)) - if (webview && webview.evalJSSync) { - const js = `(${measureText.toString()})(${JSON.stringify(text)},${JSON.stringify(font)})` - const width = webview.evalJSSync(js) || 0 - textMetrics = new TextMetrics(width) - } else { - console.error('warning: measureText missing required arguments: callback') - } - } - return textMetrics + const webview = plus.webview.getWebviewById(String(this.pageId)) + width = webview.evalJSSync(`(${measureText.toString()})(${JSON.stringify(text)},${JSON.stringify(font)})`) } + return new TextMetrics(width) } save () { diff --git a/src/core/view/components/canvas/index.vue b/src/core/view/components/canvas/index.vue index e3ce43069..1fafdbf75 100644 --- a/src/core/view/components/canvas/index.vue +++ b/src/core/view/components/canvas/index.vue @@ -277,22 +277,6 @@ export default { }, this.$page.id) } }, - measureText ({ - text, - font, - callbackId - }) { - const canvas = getTempCanvas() - const c2d = canvas.getContext('2d') - c2d.font = font - UniViewJSBridge.publishHandler('onCanvasMethodCallback', { - callbackId, - data: { - errMsg: 'measureText:ok', - width: c2d.measureText(text).width || 0 - } - }, this.$page.id) - }, preloadImage: function (actions) { var self = this actions.forEach(function (action) { -- GitLab