From 4b91d394011548e2a7e2ef3219a4648a1eeb0a41 Mon Sep 17 00:00:00 2001 From: nobbo Date: Mon, 17 Apr 2023 15:42:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=87=BA=E7=8E=B0=E7=9A=84js?= =?UTF-8?q?crash=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nobbo --- .../components/NoteContentCompPortrait.ets | 156 +++++++++++------- .../src/main/ets/pages/NoteContentHome.ets | 16 +- 2 files changed, 105 insertions(+), 67 deletions(-) diff --git a/features/src/main/ets/components/NoteContentCompPortrait.ets b/features/src/main/ets/components/NoteContentCompPortrait.ets index a0b3f8f..59e4f56 100644 --- a/features/src/main/ets/components/NoteContentCompPortrait.ets +++ b/features/src/main/ets/components/NoteContentCompPortrait.ets @@ -79,16 +79,21 @@ export struct NoteContentCompPortrait { } restoreScrollTop() { - if (!AppStorage.Has('remoteScrollTopPercent')) { - return - } - var scrollTopPercent = AppStorage.Get('remoteScrollTopPercent') - if (scrollTopPercent < 0) { - return + try { + if (!AppStorage.Has('remoteScrollTopPercent')) { + return + } + var scrollTopPercent = AppStorage.Get('remoteScrollTopPercent') + if (scrollTopPercent < 0) { + return + } + this.controllerShow.runJavaScript( + 'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight() * scrollTopPercent + ) + } catch (error) { + LogUtil.info(TAG, 'restoreScrollTop error') } - this.controllerShow.runJavaScript( - 'document.documentElement.scrollTop = ' + this.controllerShow.getPageHeight() * scrollTopPercent - ) + } restoreFocus() { @@ -261,25 +266,30 @@ export struct NoteContentCompPortrait { controller: this.controllerShow }) .onPageEnd((e) => { - if (this.dpi <= 240) { - this.controllerShow.runJavaScript("changeSizeToRk()") - } else if (this.dpi <= 320 && this.dpi > 240) { - this.controllerShow.runJavaScript("changeSizeToPhone()") - } else { - this.controllerShow.runJavaScript("changeSizeToTablet()") - } - LogUtil.info(TAG, "finish loadurl") - let self = this - this.controllerShow.runJavaScript( - "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')", - () => { - // wait for the image in the note to load - setTimeout(function () { - self.restoreScrollTop() - self.restoreFocus() - }, 100) + try { + if (this.dpi <= 240) { + this.controllerShow.runJavaScript("changeSizeToRk()") + } else if (this.dpi <= 320 && this.dpi > 240) { + this.controllerShow.runJavaScript("changeSizeToPhone()") + } else { + this.controllerShow.runJavaScript("changeSizeToTablet()") } - ) + LogUtil.info(TAG, "finish loadurl") + let self = this + this.controllerShow.runJavaScript( + "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')", + () => { + // wait for the image in the note to load + setTimeout(function () { + self.restoreScrollTop() + self.restoreFocus() + }, 100) + } + ) + } catch (error) { + LogUtil.info(TAG, 'onPageEnd error') + } + }) .imageAccess(true) .onlineImageAccess(true) @@ -297,7 +307,11 @@ export struct NoteContentCompPortrait { } // 添加定时器:3s自动保存 time_id = setInterval(() => { - this.controllerShow.runJavaScript("scheduledSaveContent()") + try { + this.controllerShow.runJavaScript("scheduledSaveContent()") + } catch (error) { + LogUtil.info(TAG, 'setInterval error') + } }, 3000) LogUtil.info(TAG, "setInterval time_id : " + time_id) this.editModel = true @@ -484,14 +498,18 @@ export struct ToolBarComp { .width(24) .responseRegion({ width: 54, height: 54 }) .onClick(() => { - this.controllerShow.runJavaScript("getHtmlContent()") - // 清除定时器 - if (time_id != undefined) { - LogUtil.info(TAG, "back, clearInterval time_id : " + time_id) - clearInterval(time_id) + try { + this.controllerShow.runJavaScript("getHtmlContent()") + // 清除定时器 + if (time_id != undefined) { + LogUtil.info(TAG, "back, clearInterval time_id : " + time_id) + clearInterval(time_id) + } + router.back() + NoteUtil.refreshAll() + } catch (error) { + LogUtil.info(TAG, 'back error') } - router.back() - NoteUtil.refreshAll() }) if (this.editModel == false) { @@ -499,22 +517,26 @@ export struct ToolBarComp { Image(this.selectedNoteData.is_favorite == Favorite.Yes ? $r('app.media.favorite') : $r('app.media.favorite_cancel')) .height(24).width(24) .onClick(() => { - this.selectedNoteData.is_favorite = (this.selectedNoteData.is_favorite == Favorite.Yes ? Favorite.No : Favorite.Yes) - // update note to db - let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable) - predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid) - RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null) - if (this.selectedFolderData.uuid === SysDefFolderUuid.MyFavorites) { - this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.MyFavorites) - this.controllerShow.runJavaScript( - "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" - ) - // save continue data - let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject()) - AppStorage.SetOrCreate('ContinueNote', continueNote) - LogUtil.info(TAG, "ToolBarComp, set continue note success") + try { + this.selectedNoteData.is_favorite = (this.selectedNoteData.is_favorite == Favorite.Yes ? Favorite.No : Favorite.Yes) + // update note to db + let predicates_note = RdbStoreUtil.getRdbPredicates(TableName.NoteTable) + predicates_note.equalTo(NoteTableColumn.Uuid, this.selectedNoteData.uuid) + RdbStoreUtil.update(this.selectedNoteData.toNoteObject(), predicates_note, null) + if (this.selectedFolderData.uuid === SysDefFolderUuid.MyFavorites) { + this.selectedNoteData = NoteUtil.getFirstNoteData(AppStorage.Get('AllNoteArray'), SysDefFolderUuid.MyFavorites) + this.controllerShow.runJavaScript( + "RICH_EDITOR.setHtml('" + this.selectedNoteData.content_text + "')" + ) + // save continue data + let continueNote: string = JSON.stringify(this.selectedNoteData.toNoteObject()) + AppStorage.SetOrCreate('ContinueNote', continueNote) + LogUtil.info(TAG, "ToolBarComp, set continue note success") + } + NoteUtil.refreshAll() + } catch (error) { + LogUtil.info(TAG, 'favorite error') } - NoteUtil.refreshAll() }) Image($r('app.media.delete')).height(24).width(24) .onClick(() => { @@ -527,10 +549,14 @@ export struct ToolBarComp { Button({ type: ButtonType.Normal, stateEffect: true }) { Image($r('app.media.undo')).height(24).width(24) .onClick(() => { - // 退出键盘 - // @ts-ignore - inputMethod.getController().stopInputSession(); - this.controllerShow.runJavaScript("javascript:RICH_EDITOR.undo()") + try { + // 退出键盘 + // @ts-ignore + inputMethod.getController().stopInputSession(); + this.controllerShow.runJavaScript("javascript:RICH_EDITOR.undo()") + } catch (error) { + LogUtil.info(TAG, 'undo error') + } }) }.width(42) .height(42) @@ -540,10 +566,14 @@ export struct ToolBarComp { Button({ type: ButtonType.Normal, stateEffect: true }) { Image($r('app.media.todo')).height(24).width(24) .onClick(() => { - // 退出键盘 - // @ts-ignore - inputMethod.getController().stopInputSession(); - this.controllerShow.runJavaScript("javascript:RICH_EDITOR.redo()") + try { + // 退出键盘 + // @ts-ignore + inputMethod.getController().stopInputSession(); + this.controllerShow.runJavaScript("javascript:RICH_EDITOR.redo()") + } catch (error) { + LogUtil.info(TAG, 'todo error') + } }) }.width(42) .height(42) @@ -553,9 +583,13 @@ export struct ToolBarComp { Button({ type: ButtonType.Normal, stateEffect: true }) { Image($r('app.media.tick_thin')).height(24).width(24) .onClick(() => { - // 保存笔记信息到数据库 - this.controllerShow.runJavaScript("getHtmlContent()") - this.editModel = false + try { + // 保存笔记信息到数据库 + this.controllerShow.runJavaScript("getHtmlContent()") + this.editModel = false + } catch (error) { + LogUtil.info(TAG, 'tick_thin error') + } }) }.width(42) .height(42) diff --git a/product/default/src/main/ets/pages/NoteContentHome.ets b/product/default/src/main/ets/pages/NoteContentHome.ets index 032413c..0733cca 100644 --- a/product/default/src/main/ets/pages/NoteContentHome.ets +++ b/product/default/src/main/ets/pages/NoteContentHome.ets @@ -48,12 +48,16 @@ struct NoteContentHome { } onBackPress(): void { - LogUtil.info(this.TAG, "onBackPress") - this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(false)") - this.controllerShow.runJavaScript("getHtmlContent()") - if (deviceInfo.deviceType !== 'phone' && deviceInfo.deviceType !== 'default') { - // @ts-ignore - inputMethod.getController().stopInputSession(); + try { + LogUtil.info(this.TAG, "onBackPress") + this.controllerShow.runJavaScript("RICH_EDITOR.setInputEnabled(false)") + this.controllerShow.runJavaScript("getHtmlContent()") + if (deviceInfo.deviceType !== 'phone' && deviceInfo.deviceType !== 'default') { + // @ts-ignore + inputMethod.getController().stopInputSession(); + } + } catch (error) { + LogUtil.info(this.TAG, 'onBackPress error') } } -- Gitee