在 Webview React Native 中接受确认

Accept confirm in Webview React Native

我有一个 React Native 应用程序(带有 expo),它有一个 Webview,我使用它和 injectedJavascript 来完成登录并做一些事情。

事情是在一个部分,有一个确认对话框,我需要接受然后继续 JS。

我有这样的东西:

const sendDataFromReactNativeToWebView = async () => {
    await new Promise(() => setTimeout(() => createAlert(), 4000));
    let injectedData = `document.querySelector("#login-user").value= "test";`;
    viewRef.injectJavaScript(injectedData);
    await new Promise((resolve) => setTimeout(resolve, 500));
    injectedData = `document.querySelector("#login-password").value= "test123";`;
    viewRef.injectJavaScript(injectedData);
    await new Promise((resolve) => setTimeout(resolve, 500));
    injectedData = `document.getElementById("pc-login-btn").click();`;
    viewRef.injectJavaScript(injectedData);
    //here I've a confirm that I need to accept
    await new Promise((resolve) => setTimeout(resolve, 15000));
    injectedData = `document.querySelector("#menuTree > li:nth-child(2) > a").click();`;
    viewRef.injectJavaScript(injectedData);  
  };

return (
    <>
      <View style={styles.container}>
        <Image source={logo} />
        <Text style={styles.baseText}>
          Test <Text style={styles.innerText}>
          </Text>
        </Text>
        <View style={{ margin: 10 }}></View>
        <Button
          title="Test me"
          onPress={() => sendDataFromReactNativeToWebView()}
        />  
        <StatusBar style="auto" />
      </View>
      <View style={styles.web}>
        <SafeAreaView style={{ flex: 1 }}>
          <TouchableOpacity onPress={() => setSeeWebView(false)}>
            <Text>Close x</Text>
          </TouchableOpacity>
          <WebView
            style={{ flex: 1 }}
            source={{ uri: "http://www.someurl.com" }} 
            javaScriptEnabledAndroid={true}
            ref={(webView) => (viewRef = webView)}
          />
        </SafeAreaView>
      </View>
    </>
  );
}

webview 中有一个 onMessage 也许我可以使用但不知道如何使用。

有什么想法吗?

问得好。 我认为你可以使用

function confirm() { 
return true;
} 

如果在每次 confirm() 发生之前执行它,至少它会起作用。