Javascript 第一次午餐时反应本机webview错误
我在我的webview源上有一个自定义URL方案(atrium://) 我正在处理“onNavigationStateChange”和“onShouldStartLoadWithRequest”中的URL 除了启动应用程序外,一切正常。 如果我进入应用程序并转到webview,它会显示错误“UNKNOW\u URL\u SCHEME URL:atrium://...“但如果我回去再次进入网络视图,它就会工作! 我不知道在第一次加载应用程序时是什么导致了这个错误。 代码如下:Javascript 第一次午餐时反应本机webview错误,javascript,react-native,react-native-webview,Javascript,React Native,React Native Webview,我在我的webview源上有一个自定义URL方案(atrium://) 我正在处理“onNavigationStateChange”和“onShouldStartLoadWithRequest”中的URL 除了启动应用程序外,一切正常。 如果我进入应用程序并转到webview,它会显示错误“UNKNOW\u URL\u SCHEME URL:atrium://...“但如果我回去再次进入网络视图,它就会工作! 我不知道在第一次加载应用程序时是什么导致了这个错误。 代码如下: const hand
const handleWebViewNavigationStateChange = newNavState => {
const { url } = newNavState;
console.log("URL : ", url)
if (url.startsWith('atrium://')) {
return false
}
}
<WebView
setSupportMultipleWindows={false}
ref={webView}
originWhitelist={['http://*', 'https://*', 'atrium://*']}
source={{ uri: route.params.url }}
style={{ flex: 1 }}
javaScriptEnabled={true}
onNavigationStateChange={handleWebViewNavigationStateChange}
onShouldStartLoadWithRequest={handleWebViewNavigationStateChange}
/>
const handleWebViewNavigationStateChange=newNavState=>{
const{url}=newNavState;
日志(“URL:,URL”)
if(url.startsWith('atrium://')){
返回错误
}
}
route.params.url是这样的:
"https://int-widgets.moneydesktop.com/md/connect/vx59gg6k65tynA78p53dnvs42qZrk8b1cc74t4670wnprf6kbm4c2scfpfjyy2dgcv6g7h54Axpjm8bgzddtjx1zh3fft9t5n7dllAn4b6442vt3wplzzppc7r7h56n0hqthsbcxtnwAps3sjz0sfsspqjzw94h14nvym22g3tv528yfhctkv1hd0k35v1jf2l101yhvq43zb2x68x43p7bjsfyApqkfj0lptscs5pwA6045yznh4sbmvtkkfxkh9xcxkjr8vxwlc3mxwh5gp02z8lxb28016ywwhn45pdrsLTXXVBCYXP281DVNJP1D1Q5ATN5QJS5FG3CZXC1Q25JSSCAMQ8DNFKMH5/EYJ1AV9TZXNZYWDLX3ZLCNPB24IOJQSINVPX21LC3NHZ2VFD2VIDMLLD191CMXFC2NOZW1LIJOIYXRYAXVTIIWIY29SB3JFC2NOZW1LIJOIBGLNKPC19TB2JPBGD2VIDMLLDYI6DHJ1ZX0%3D”尝试以下方法:
<WebView
{...this.props}
bounces={false}
originWhitelist={["https://*", "http://*", "file://*", "sms://*", 'atrium://*']}
allowFileAccess={true}
domStorageEnabled={true}
javaScriptEnabled={true}
geolocationEnabled={true}
saveFormDataDisabled={true}
allowFileAccessFromFileURLS={true}
allowUniversalAccessFromFileURLs={true}
/>
function onShouldStartLoadWithRequest(request){
if (!request || !request.url) {
return true;
}
// list of schemas we will allow the webview
// to open natively
if(request.url.startsWith("tel:") ||
request.url.startsWith("mailto:") ||
request.url.startsWith("maps:") ||
request.url.startsWith("geo:") ||
request.url.startsWith("sms:")
){
Linking.openURL(request.url).catch(er => {
console.log('Failed to open Link:', er.message);
});
return false;
}
// let everything else to the webview
return true;
}