Как запустить реагировать нативный код внутри введенного JavaScript в веб-представлении? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть встроенная функция реагирования, которая загружает видео с помощью «rn-fetch-blob» и сохраняет в каталог документов, который работает нормально.

Я хочу добиться этой функциональности с помощью веб-просмотрапоскольку он выполняется в коде в отдельном потоке.

Ниже приведен мой код:

    downloadVideo() {
        let videoPathToDownload = 'http://XXXXXXXXXXX/0fgqhjcr6my.mp4';
        RNFetchBlob
            .config({
                fileCache: true,
                appendExt: 'mp4'
            })
            .fetch('GET', videoPathToDownload)
            .then((res) => {
                console.log('The file saved to ', res.path())
            })
    }


    render() {
        return (
            <View style={{flex: 1}}>
            <WebView
                javaScriptEnabled={true}
                domStorageEnabled={true}
                injectedJavaScript={}
                source={{ uri: "https://www.google.com" }} 
                style={{ marginTop: 20  }} 
             />
            </View>
        );
    }

Я хочу вызвать функцию downloadVideo () из веб-просмотра внутри injectedJS или любыми возможными способами.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 29 мая 2019

Используйте реакцию собственного WebView:

<WebView
    ref={(ref) => { this.webview = ref; }}
    source={{ uri: this.state.webViewUrl }}
    originWhitelist={['*']}
    javaScriptEnabledAndroid={true}
    injectedJavaScript={jsCode}
    onMessage={this._onMessage} // only if you want connection back
/>

, и вы можете передать js код:

const jsCode = `
    document.querySelector('button').addEventListener("click", function() {  
        alert('Hello Web')
    }); 
    true;
    `
...