React Native WebView - открывать ссылку во внешнем браузере только в случае взаимодействия с пользователем - PullRequest
2 голосов
/ 09 апреля 2020

У меня есть следующий компонент WebView, который используется несколько раз для различных вложений в новостных статьях

<WebView
    useWebKit={true}
    ref={(ref) => this.webview = ref}
    javaScriptEnabled={true}
    injectedJavaScript={"(" + injectedScript + ")()"}
    onMessage={this.onMessage}
    onNavigationStateChange={this.onNavigationStateChange}
    {...this.props}
/>

и следующий слушатель изменения состояния навигации, используемый для открытия ссылок во внешнем браузере

onNavigationStateChange = (event) => {
    this.webview.stopLoading();
    Linking.openURL(event.url);
}

Проблема в том, что слушатель изменений навигации не способен различать взаимодействие с пользователем и автоматические перенаправления страниц c (что часто делает встраивание в социальные сети). Как открыть ссылку ТОЛЬКО во внешнем браузере для взаимодействия с пользователем?

1 Ответ

2 голосов
/ 09 апреля 2020

Я точно не знаю, перенаправляет ли автоматическая страница c события клика, но они не должны этого делать, поэтому вы можете прослушивать только click события, которые, я полагаю, могут быть инициированы только пользователем.

onNavigationStateChange = (navState) =>
{
    if (navState.navigationType === 'click') {
        // User clicked something
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...