SHOW:
|
|
- or go back to the newest paste.
1 | // fix https://github.com/facebook/react-native/issues/10865 | |
2 | // MrLoh | |
3 | const patchPostMessageJsCode = `(${String(function() { | |
4 | throw new Error; // Doesn't get triggered | |
5 | var originalPostMessage = window.postMessage | |
6 | var patchedPostMessage = function(message, targetOrigin, transfer) { | |
7 | originalPostMessage(message, targetOrigin, transfer) | |
8 | } | |
9 | patchedPostMessage.toString = function() { | |
10 | return String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage') | |
11 | } | |
12 | - | window.postMessage( "my message" ); |
12 | + | |
13 | setTimeout(function () {window.postMessage( "my message", "*" );}, 2000); | |
14 | throw new Error | |
15 | })})();` | |
16 | ||
17 | ||
18 | class JourneyVid extends Component { | |
19 | state = {debug: null} | |
20 | - | this.WebView.postMessage(JSON.stringify(action)); |
20 | + | |
21 | postMessage = (action) => { | |
22 | // throw new Error // Works fine too | |
23 | this.webView.postMessage("my other message", "*"); | |
24 | - | var dataStr = JSON.parse(evnt.nativeEvent.data); |
24 | + | |
25 | - | this.setState({ debug: dataStr }) |
25 | + | |
26 | onMessage = (evnt) => { | |
27 | throw new Error; // Doesn't get triggered | |
28 | var dataStr = JSON.parse( evnt.nativeEvent.data ); | |
29 | this.setState({ debug: dataStr }); | |
30 | } | |
31 | - | var style = {...styles.vid, backgroundColor: color, flex: 1, display: 'flex'} |
31 | + | |
32 | render () { | |
33 | - | var color = this.props.color || 'red', |
33 | + | // throw new Error // works just fine |
34 | - | debugContent = null; |
34 | + | |
35 | ||
36 | var style = {...styles.vid, backgroundColor: color, flex: 1, display: 'flex'}, | |
37 | - | debugContent = <View style={{position: 'absolute', top: 0, left: 0}}><Text>this.state.debug</Text></View>; |
37 | + | color = this.props.color || 'red', |
38 | debugContent = null; | |
39 | ||
40 | if (this.state.debug !== null) { | |
41 | debugContent = <Text>{ this.state.debug }</Text>; // Doesn't ever seem to show anything | |
42 | style.backgroundColor = 'blue'; | |
43 | } | |
44 | - | ref={thsiRef => {this.WebView = thsiRef}} |
44 | + | |
45 | return ( | |
46 | - | // source={{uri: 'https://www.youtube.com/embed/sd1KFa0pPvM?playsinline=1&autoplay=1&enablejsapi=1'}} |
46 | + | |
47 | - | // source={{uri: 'https://www.youtube.com/watch?v=sd1KFa0pPvM?playsinline=0&enablejsapi=1&autoplay=0'}} |
47 | + | |
48 | - | // source={{uri: 'https://www.youtube.com/watch?v=sd1KFa0pPvM?playsinline=0&autoplay=0'}} |
48 | + | ref={thsiRef => {this.webView = thsiRef}} |
49 | - | source={{uri: 'https://codeforboston.github.io/cliff-effects/#/'}} |
49 | + | |
50 | - | // source={{uri: 'https://www.youtube.com/watch?v=sd1KFa0pPvM'}} |
50 | + | source={{uri: 'https://myURL.com'}} |
51 | - | // source={{html: '<html><body><iframe width="1347" height="503" src="https://www.youtube.com/embed/sd1KFa0pPvM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></body></html>'}} |
51 | + | |
52 | javaScriptEnabledAndroid={true} | |
53 | domStorageEnabled={true} | |
54 | decelerationRate='normal' | |
55 | startInLoadingState={true} | |
56 | allowsInlineMediaPlayback={false} | |
57 | onMessage={this.onMessage} | |
58 | injectedJavascript={patchPostMessageJsCode} /> | |
59 | <TouchableOpacity onPress={this.postMessage}> | |
60 | <Text>Send message from react native</Text> | |
61 | </TouchableOpacity> | |
62 | { debugContent } | |
63 | </View> | |
64 | ); | |
65 | } | |
66 | }; |