Web 视图点击:url 未在 android 中检测到,iOS 工作:本机反应
Web view click : url not detected in android , iOS working : react native
我有一个反应本机应用程序,登录后在 Web 视图中加载 url。用户在 Web 视图中移动,单击支持的链接。现在我想通过单击网络视图中的按钮从网络视图中打开共享选项。当我们点击按钮时,我们有一个 url 但我无法用 'onNavigationStateChange' 检测到 url。那么,如果没有 url,我们该如何处理呢?我尝试了很多链接,但 none 得到了结果。 'OPEN SHARE CONTROLLER' 永远不会达到,'navigation type click' 也不会。这是我的示例代码:
<WebView scalesPageToFit
style={{ flex: 1 }} source={{ uri: url }} onLoadStart={() => (setLoading(true))} onLoadEnd={() => (setLoading(false))}
javaScriptEnabled={true}
domStorageEnabled={true}
onNavigationStateChange = {handleNavigationStateChange}
onLoadProgress = {({ nativeEvent }) => {
console.log(nativeEvent.url)
}}
/>
const handleNavigationStateChange = navState => {
console.log(navState.url);
console.log(navState.navigationType)
const { url } = navState.url;
if (!url) return;
if (url.includes('Logout')) {
Alert.alert(
"Logout",
"Are you sure you want to logout?",
[
{
text: "No",
onPress: () => console.log("Cancel Pressed"),
style: "cancel"
},
{ text: "Yes", onPress: () => navigation.pop(1) }
]
);
}
if (url.includes('Register')) {
console.log('OPEN SHARE CONTROLLER')
}
if (navState.navigationType === 'click') {
// User clicked something
console.log('User clicked something')
}
};
通过使用 setSupportMultipleWindows={false}
和 onShouldStartLoadWithRequest 解决。
我有一个反应本机应用程序,登录后在 Web 视图中加载 url。用户在 Web 视图中移动,单击支持的链接。现在我想通过单击网络视图中的按钮从网络视图中打开共享选项。当我们点击按钮时,我们有一个 url 但我无法用 'onNavigationStateChange' 检测到 url。那么,如果没有 url,我们该如何处理呢?我尝试了很多链接,但 none 得到了结果。 'OPEN SHARE CONTROLLER' 永远不会达到,'navigation type click' 也不会。这是我的示例代码:
<WebView scalesPageToFit
style={{ flex: 1 }} source={{ uri: url }} onLoadStart={() => (setLoading(true))} onLoadEnd={() => (setLoading(false))}
javaScriptEnabled={true}
domStorageEnabled={true}
onNavigationStateChange = {handleNavigationStateChange}
onLoadProgress = {({ nativeEvent }) => {
console.log(nativeEvent.url)
}}
/>
const handleNavigationStateChange = navState => {
console.log(navState.url);
console.log(navState.navigationType)
const { url } = navState.url;
if (!url) return;
if (url.includes('Logout')) {
Alert.alert(
"Logout",
"Are you sure you want to logout?",
[
{
text: "No",
onPress: () => console.log("Cancel Pressed"),
style: "cancel"
},
{ text: "Yes", onPress: () => navigation.pop(1) }
]
);
}
if (url.includes('Register')) {
console.log('OPEN SHARE CONTROLLER')
}
if (navState.navigationType === 'click') {
// User clicked something
console.log('User clicked something')
} };
通过使用 setSupportMultipleWindows={false}
和 onShouldStartLoadWithRequest 解决。