Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // fix https://github.com/facebook/react-native/issues/10865
- // MrLoh
- const patchPostMessageJsCode = `(${String(function() {
- throw new Error; // Doesn't get triggered
- var originalPostMessage = window.postMessage
- var patchedPostMessage = function(message, targetOrigin, transfer) {
- originalPostMessage(message, targetOrigin, transfer)
- }
- patchedPostMessage.toString = function() {
- return String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage')
- }
- window.postMessage = patchedPostMessage
- setTimeout(function () {window.postMessage( "my message", "*" );}, 2000);
- throw new Error
- })})();`
- class JourneyVid extends Component {
- state = {debug: null}
- postMessage = (action) => {
- // throw new Error // Works fine too
- this.webView.postMessage("my other message", "*");
- }
- onMessage = (evnt) => {
- throw new Error; // Doesn't get triggered
- var dataStr = JSON.parse( evnt.nativeEvent.data );
- this.setState({ debug: dataStr });
- }
- render () {
- // throw new Error // works just fine
- count++
- var style = {...styles.vid, backgroundColor: color, flex: 1, display: 'flex'},
- color = this.props.color || 'red',
- debugContent = null;
- if (this.state.debug !== null) {
- debugContent = <Text>{ this.state.debug }</Text>; // Doesn't ever seem to show anything
- style.backgroundColor = 'blue';
- }
- return (
- <View style={style}>
- <WebView style={{flex: 1}}
- ref={thsiRef => {this.webView = thsiRef}}
- automaticallyAdjustContentInsets={true}
- source={{uri: 'https://myURL.com'}}
- javaScriptEnabled={true}
- javaScriptEnabledAndroid={true}
- domStorageEnabled={true}
- decelerationRate='normal'
- startInLoadingState={true}
- allowsInlineMediaPlayback={false}
- onMessage={this.onMessage}
- injectedJavascript={patchPostMessageJsCode} />
- <TouchableOpacity onPress={this.postMessage}>
- <Text>Send message from react native</Text>
- </TouchableOpacity>
- { debugContent }
- </View>
- );
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement