我有一個 React Native 應用程式(帶有 expo),它有一個 Webview,我使用注入的Javascript 來完成登錄并做一些事情。
一方面,有一個確認對話框,我需要接受然后繼續 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>
</>
);
}
有一個可能我可以onMessage使用webview但不知道如何使用。
任何的想法?
uj5u.com熱心網友回復:
好問題。我認為你可以使用
function confirm() {
return true;
}
如果您在每次確認()發生之前執行它,至少它會起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475089.html
標籤:javascript 反应式 网页浏览 世博会
