CRAlpha / react-native-wkwebview

WKWebview Component for React Native
MIT License
642 stars 271 forks source link

"onNavigationStateChange" Unable to listen for route changes for single-page applications #200

Open hzuhyb opened 5 years ago

hzuhyb commented 5 years ago

I use onNavigationStateChange to monitor the change of URL:

onNavigationStateChange = (navState) => { console.log(navState) }

however, it will not be called if the page your WKWebView is trying to open is a SPA.

Environment

OS:  macOS Sierra 10.13.6
Node:  8.9.1
Yarn:  0.24.5
npm:  5.4.0

Packages: (wanted => installed)
react-native: 0.53.0
react: 16.3.1
react-native-wkwebview-reborn:  1.22.0

Steps to Reproduce

1.WKWebView opens https://eos.live and logs in 2.Click to jump to other pages

When the web page in WKWebView uses history.pushState () to change URL, onNavigationStateChange does not execute

Expected Behavior

onNavigationStateChange executes after each URL change

Actual Behavior

onNavigationStateChange does not execute every time URL changes

Reproducible Demo

<WKWebView
  onNavigationStateChange={this.onNavigationStateChange.bind(this)}
  source={{uri:"https://eos.live"}}
  allowsInlineMediaPlayback={true}
  domStorageEnabled={true}
  javaScriptEnabled={true}
  scalesPageToFit={false}
/>
yurnery commented 5 years ago

I have the same problem, did you solved it?

ColinChen2 commented 5 years ago

me too, any solution? or merge pull request https://github.com/CRAlpha/react-native-wkwebview/pull/210