在React Native中将WebView与其他域重定向

时间:2018-04-14 15:44:05

标签: android ios react-native webview

我尝试将其他域名的链接重定向到设备的默认浏览器。

例如:

我尝试了很多东西,但我仍然无法使其发挥作用。我考虑将onNavigationStateChange与链接一起使用。

感谢您的帮助。

import React from 'react';
import { StyleSheet, View, WebView } from 'react-native';
import { Constants } from 'expo';


export default class App extends React.Component {

  render() {
    return (
      <View style={styles.container}>
        <View style={styles.statusBar} />
        <WebView
          source={{uri: 'https://example.com'}}
          renderError={() => alert('Merci de vérifier votre connexion Internet', 'Internet non disponible')}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  statusBar: {
    backgroundColor: "#1D3B57",
    height: Constants.statusBarHeight,
  }
});

1 个答案:

答案 0 :(得分:1)

解决方案1:

onNavigationStateChange(e)
{
  if(e.url !== this.state.oldUrl)
  {
    // If url changed
    if(/youtube.com/.test(e.url)) // RegExp
    {
        this.refs.WEBVIEW_REF.goBack()
        Linking.canOpenURL(e.url).then(supported => {
          if (supported) return Linking.openURL(e.url)
        })
    }
    this.setState({ oldUrl: e.url })
  }
}

解决方案2:

考虑查看this PR以向JS公开本地shouldOverrideUrlLoading方法。这样做可能有点复杂。