Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第一次午餐时反应本机webview错误_Javascript_React Native_React Native Webview - Fatal编程技术网

Javascript 第一次午餐时反应本机webview错误

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

我在我的webview源上有一个自定义URL方案(atrium://) 我正在处理“onNavigationStateChange”和“onShouldStartLoadWithRequest”中的URL 除了启动应用程序外,一切正常。 如果我进入应用程序并转到webview,它会显示错误“UNKNOW\u URL\u SCHEME URL:atrium://...“但如果我回去再次进入网络视图,它就会工作! 我不知道在第一次加载应用程序时是什么导致了这个错误。 代码如下:

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;
}