|
@@ -16,6 +16,43 @@ import {
|
16
|
16
|
inlineBodyStyle
|
17
|
17
|
} from './config';
|
18
|
18
|
|
|
19
|
+const onShouldStartLoadWithRequest = result => {
|
|
20
|
+ console.log(result);
|
|
21
|
+ return true;
|
|
22
|
+};
|
|
23
|
+
|
|
24
|
+const onError = ({ nativeEvent }) => console.error('WebView error: ', nativeEvent);
|
|
25
|
+
|
|
26
|
+const onMessage = event => {
|
|
27
|
+ const { data } = event.nativeEvent;
|
|
28
|
+ let messageData;
|
|
29
|
+ // maybe parse stringified JSON
|
|
30
|
+ try {
|
|
31
|
+ messageData = JSON.parse(data);
|
|
32
|
+ } catch (e) {
|
|
33
|
+ console.log(e.message);
|
|
34
|
+ }
|
|
35
|
+ if (typeof messageData === 'object') {
|
|
36
|
+ const { url } = messageData;
|
|
37
|
+ // check if this message concerns us
|
|
38
|
+ if (url && url.startsWith('http')) {
|
|
39
|
+ Linking.openURL(url).catch(error => console.error('An error occurred', error));
|
|
40
|
+ }
|
|
41
|
+ }
|
|
42
|
+};
|
|
43
|
+
|
|
44
|
+const onHeightLoadStart = () => console.log('height on load start');
|
|
45
|
+
|
|
46
|
+const onHeightLoad = () => console.log('height on load');
|
|
47
|
+
|
|
48
|
+const onHeightLoadEnd = () => console.log('height on load end');
|
|
49
|
+
|
|
50
|
+const onWidthLoadStart = () => console.log('width on load start');
|
|
51
|
+
|
|
52
|
+const onWidthLoad = () => console.log('width on load');
|
|
53
|
+
|
|
54
|
+const onWidthLoadEnd = () => console.log('width on load end');
|
|
55
|
+
|
19
|
56
|
const Explorer = () => {
|
20
|
57
|
const [{ widthHtml, heightHtml }, setHtml] = useState(() => ({
|
21
|
58
|
widthHtml: autoWidthHtml0,
|
|
@@ -64,34 +101,15 @@ const Explorer = () => {
|
64
|
101
|
>
|
65
|
102
|
<AutoHeightWebView
|
66
|
103
|
customStyle={heightStyle}
|
67
|
|
- onError={() => console.log('height on error')}
|
68
|
|
- onLoad={() => console.log('height on load')}
|
69
|
|
- onLoadStart={() => console.log('height on load start')}
|
70
|
|
- onLoadEnd={() => console.log('height on load end')}
|
71
|
|
- onShouldStartLoadWithRequest={result => {
|
72
|
|
- console.log(result);
|
73
|
|
- return true;
|
74
|
|
- }}
|
|
104
|
+ onError={onError}
|
|
105
|
+ onLoad={onHeightLoad}
|
|
106
|
+ onLoadStart={onHeightLoadStart}
|
|
107
|
+ onLoadEnd={onHeightLoadEnd}
|
|
108
|
+ onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
|
75
|
109
|
onSizeUpdated={setHeightSize}
|
76
|
110
|
source={{ html: heightHtml }}
|
77
|
111
|
customScript={heightScript}
|
78
|
|
- onMessage={event => {
|
79
|
|
- const { data } = event.nativeEvent;
|
80
|
|
- let messageData;
|
81
|
|
- // maybe parse stringified JSON
|
82
|
|
- try {
|
83
|
|
- messageData = JSON.parse(data);
|
84
|
|
- } catch (e) {
|
85
|
|
- console.log(e.message);
|
86
|
|
- }
|
87
|
|
- if (typeof messageData === 'object') {
|
88
|
|
- const { url } = messageData;
|
89
|
|
- // check if this message concerns us
|
90
|
|
- if (url && url.startsWith('http')) {
|
91
|
|
- Linking.openURL(url).catch(error => console.error('An error occurred', error));
|
92
|
|
- }
|
93
|
|
- }
|
94
|
|
- }}
|
|
112
|
+ onMessage={onMessage}
|
95
|
113
|
/>
|
96
|
114
|
<Text style={{ padding: 5 }}>
|
97
|
115
|
height: {heightSize.height}, width: {heightSize.width}
|
|
@@ -110,14 +128,11 @@ const Explorer = () => {
|
110
|
128
|
}
|
111
|
129
|
]}
|
112
|
130
|
customStyle={widthStyle}
|
113
|
|
- onError={() => console.log('width on error')}
|
114
|
|
- onLoad={() => console.log('width on load')}
|
115
|
|
- onLoadStart={() => console.log('width on load start')}
|
116
|
|
- onLoadEnd={() => console.log('width on load end')}
|
117
|
|
- onShouldStartLoadWithRequest={result => {
|
118
|
|
- console.log(result);
|
119
|
|
- return true;
|
120
|
|
- }}
|
|
131
|
+ onError={onError}
|
|
132
|
+ onLoad={onWidthLoad}
|
|
133
|
+ onLoadStart={onWidthLoadStart}
|
|
134
|
+ onLoadEnd={onWidthLoadEnd}
|
|
135
|
+ onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
|
121
|
136
|
onSizeUpdated={setWidthSize}
|
122
|
137
|
source={{ html: widthHtml }}
|
123
|
138
|
customScript={widthScript}
|