Skip to content

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

@hzuhyb

Description

@hzuhyb

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}
/>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions