2016-08-23 66 views
8

Webview組件允許我指定目標網址,例如facebook.comReact原生webview獲取網址

render() { 

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

但是,如果我點擊Facebook中的鏈接,我怎麼能得到被點擊的網址或網址被降落?

回答

21

這是我用於以前項目的Webview。

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

爲您關鍵的是這一行:

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

,你可以這樣寫的網址:

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

如果我沒有記錯這個火災3次加載URL時。

webviewState對象原型:

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

第三(最終)時間這個事件被調用時,裝載屬性是假

讓我知道,如果它幫助。

+0

它的工作原理。謝謝。有沒有關於webViewState細節的任何解釋? – bns

+0

如何檢測只有網址/哈希值的變化?如果網站不更改狀態,onNavigationStateChange不會觸發。 – chetan

+0

@chetan會不會改變源呢?我很長時間沒有與RN合作過 – dv3