diff --git a/harmony/rn_webview/src/main/ets/RNCWebView.ets b/harmony/rn_webview/src/main/ets/RNCWebView.ets index af4626020..2b0136eee 100644 --- a/harmony/rn_webview/src/main/ets/RNCWebView.ets +++ b/harmony/rn_webview/src/main/ets/RNCWebView.ets @@ -118,6 +118,7 @@ export struct RNCWebView { private eventEmitter: RNC.RNCWebView.EventEmitter | undefined = undefined private cleanUpCallbacks: (() => void)[] = [] @State private descriptorWrapper: RNC.RNCWebView.DescriptorWrapper = {} as RNC.RNCWebView.DescriptorWrapper + overScrollMode: OverScrollMode = OverScrollMode.NEVER private onDescriptorWrapperChange(descriptorWrapper: RNC.RNCWebView.DescriptorWrapper) { this.descriptorWrapper = descriptorWrapper @@ -131,6 +132,12 @@ export struct RNCWebView { this.onDescriptorWrapperChange(newDescriptorWrapper! as RNC.RNCWebView.DescriptorWrapper) } )) + if(this.descriptorWrapper.props.overScrollMode === 'always') { + this.overScrollMode = OverScrollMode.ALWAYS + } else if(this.descriptorWrapper.props.overScrollMode === 'never') { + this.overScrollMode = OverScrollMode.NEVER + } + // this.unregisterDescriptorChangesListener = this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag, // (newDescriptor) => { // this.descriptor = (newDescriptor as WebViewViewDescriptor) @@ -399,6 +406,19 @@ export struct RNCWebView { }) } + onHttpError(code: number,description: string) { + this.eventEmitter!.emit('httpError', { + url: this.controller.getUrl(), + loading: false, + title: this.controller.getTitle(), + canGoBack: this.controller.accessBackward(), + canGoForward: this.controller.accessForward(), + lockIdentifier: 0, + description: description, + statusCode: code + }) + } + onShouldStartLoadWithRequest() { this.eventEmitter!.emit('shouldStartLoadWithRequest', { url: this.controller.getUrl(), @@ -460,6 +480,7 @@ export struct RNCWebView { .cacheMode(this.cacheMode) .domStorageAccess(this.descriptorWrapper.props.domStorageEnabled) .zoomAccess(this.descriptorWrapper.props.scalesPageToFit)// nestedScrollFlag 为true 表示可以在嵌套滚动中,web自己能滚动 + .overScrollMode(this.overScrollMode) // .layoutMode(this.nestedScrollFlag ? WebLayoutMode.NONE : WebLayoutMode.FIT_CONTENT) // .nestedScroll(this.nestedScrollFlag ? { @@ -494,6 +515,16 @@ export struct RNCWebView { this.onLoadingError(errorCode, errorInfo) } }) + .onHttpErrorReceive((event) => { + console.log('onHttpErrorReceiveevent',event) + if (event) { + let errorInfo: string = event.response.getResponseData(); + let code: number = event.response.getResponseCode() + console.log('onHttpErrorReceive',errorInfo) + Logger.debug(TAG, "[RNOH] errorInfo:" + errorInfo) + this.onHttpError(code,errorInfo) + } + }) .onLoadIntercept((event) => { if (!this.descriptorWrapper.props.shouldStartLoadWithRequestEnabled) { Logger.debug(TAG,