2016-08-23 14 views
8

Webview-Komponente ermöglicht mir, eine Ziel-URL, z. facebook.comReact Native Webview erhalten URL

render() { 

    return (
     <WebView 
      source={{uri: https://www.facebook.com}} 
      style={{marginTop: 20}} 
     /> 
    ); 
    } 

Wenn ich jedoch auf den Link in Facebook klicken, wie kann ich die URL geklickt wird oder die URL gelandet ist?

Antwort

21

Hier ist ein Webview, das ich für mein vorheriges Projekt verwendet habe.

<WebView 
     ref="webview" 
     source={{uri:this.state.url}} 
     onNavigationStateChange={this._onNavigationStateChange.bind(this)} 
     javaScriptEnabled = {true} 
     domStorageEnabled = {true} 
     injectedJavaScript = {this.state.cookie} 
     startInLoadingState={false} 
    /> 

wichtig für Sie ist diese Zeile:

  onNavigationStateChange={this._onNavigationStateChange.bind(this)} 

und Sie die URL wie folgt lesen:

_onNavigationStateChange(webViewState){ 
    console.log(webViewState.url) 
} 

Wenn ich dieses Feuer 3 mal richtig erinnere, wenn eine URL zu laden.

webviewState Objekt Prototyp:

{ 
    canGoBack: bool, 
    canGoForward: bool, 
    loading: bool, 
    target: number, 
    title: string, 
    url: string, 
} 

Die dritte (letzte) Mal dieses Ereignis genannt wird, ist das Laden Attribut

lassen Sie mich falsch wissen, ob es hilft.

+0

Es funktioniert. Vielen Dank. Gibt es eine Erklärung zu WebViewState Details? – bns

+0

Wie erkennen Sie nur URL/Hash-Änderung? Wenn die Site ihren Status nicht ändert, wird onNavigationStateChange nicht ausgelöst. – chetan

+0

@chetan würde die Quelle dann nicht ändern? Ich habe seit langem nicht mehr mit RN gearbeitet – dv3

Verwandte Themen