diff --git a/docs/Reference.md b/docs/Reference.md index aebf216..a9efa8d 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -304,6 +304,8 @@ url > **_Note_** > Domain is only used on iOS +The `syntheticEvent` can be stopped doing its default action by calling `syntheticEvent.preventDefault()`. + --- ### `onLoad`[⬆](#props-index) diff --git a/src/WebView.android.tsx b/src/WebView.android.tsx index 08a10c1..54077bf 100644 --- a/src/WebView.android.tsx +++ b/src/WebView.android.tsx @@ -214,7 +214,6 @@ class WebView extends React.Component { onLoadingError = (event: WebViewErrorEvent) => { event.persist(); // persist this event because we need to store it const { onError, onLoadEnd } = this.props; - if (onError) { onError(event); } else { @@ -224,6 +223,7 @@ class WebView extends React.Component { if (onLoadEnd) { onLoadEnd(event); } + if (event.isDefaultPrevented()) return; this.setState({ lastErrorEvent: event.nativeEvent, diff --git a/src/WebView.ios.tsx b/src/WebView.ios.tsx index fb8be64..3553118 100644 --- a/src/WebView.ios.tsx +++ b/src/WebView.ios.tsx @@ -196,15 +196,16 @@ class WebView extends React.Component { event.persist(); // persist this event because we need to store it const { onError, onLoadEnd } = this.props; - if (onLoadEnd) { - onLoadEnd(event); - } - if (onError) { onError(event); } else { console.warn('Encountered an error loading page', event.nativeEvent); } + + if (onLoadEnd) { + onLoadEnd(event); + } + if (event.isDefaultPrevented()) return; this.setState({ lastErrorEvent: event.nativeEvent, diff --git a/src/WebView.macos.tsx b/src/WebView.macos.tsx index a2ad5b1..6ade359 100644 --- a/src/WebView.macos.tsx +++ b/src/WebView.macos.tsx @@ -184,15 +184,16 @@ class WebView extends React.Component { event.persist(); // persist this event because we need to store it const { onError, onLoadEnd } = this.props; - if (onLoadEnd) { - onLoadEnd(event); - } - if (onError) { onError(event); } else { console.warn('Encountered an error loading page', event.nativeEvent); } + + if (onLoadEnd) { + onLoadEnd(event); + } + if (event.isDefaultPrevented()) return; this.setState({ lastErrorEvent: event.nativeEvent, diff --git a/src/WebView.windows.tsx b/src/WebView.windows.tsx index 40b6af5..b64202c 100644 --- a/src/WebView.windows.tsx +++ b/src/WebView.windows.tsx @@ -153,19 +153,23 @@ export default class WebView extends React.Component onLoadingError = (event: WebViewErrorEvent) => { event.persist(); // persist this event because we need to store it - const {onError, onLoadEnd} = this.props; - if(onError) { + const { onError, onLoadEnd } = this.props; + if (onError) { onError(event); + } else { + console.warn('Encountered an error loading page', event.nativeEvent); } - if(onLoadEnd) { + + if (onLoadEnd) { onLoadEnd(event); } - console.error('Encountered an error loading page', event.nativeEvent); + if (event.isDefaultPrevented()) return; + this.setState({ lastErrorEvent: event.nativeEvent, viewState: 'ERROR', }); - } + }; onLoadingFinish =(event: WebViewNavigationEvent) => { const {onLoad, onLoadEnd} = this.props;