【问题标题】:Stop loading Webview in react native停止在反应本机中加载 Webview
【发布时间】:2018-03-11 10:07:00
【问题描述】:

我已经在 Android 平台上反应原生项目。 我有一个从 url 加载的 Webview。当用户单击任何 url 时,我想导航到我的应用程序中的屏幕,webview 将停止加载。所以在我的 onNavigationStateChange() 函数中

  source = {{uri:this.props.htmlUrl}}
    ref='_webView'
    scrollEnabled={true}
    javaScriptEnabled={true}
    domStorageEnabled={true}
    onNavigationStateChange ={(navState)=>{
      //handle navigate another screen
       this.refs._webView.stopLoading();
    }}

它有效。因此,当我返回并单击其他 url 时,我无法触摸 webview 中的任何 url。 如果有人遇到同样的问题,请帮助我。提前致谢。

【问题讨论】:

  • 你不需要停止加载webview,当它完成加载你所在的网页时它会停止加载。此外,onNavigationStateChange 不是停止 WebView、记录 navState 的最佳位置,您会看到它在页面完全加载完成之前被多次调用。您不想在页面上的大多数项目完全加载之前停止加载页面。如果您试图停止页面上正在运行的脚本,您应该考虑将 JavaScript 注入 WebView 以阻止脚本继续运行。

标签: javascript android reactjs react-native webview


【解决方案1】:

使用react-native-webview 包的onShouldStartLoadWithRequest 属性。

onShouldStartLoadWithRequest={event => {if(event.url==="XXXX") return false; return true;}}

附言从函数返回 true 继续加载请求,返回 false 停止加载。

【讨论】:

    【解决方案2】:

    您可以验证要输入的网址,当点击返回导航器时,您输入的链接只有验证。

    source = {{uri:this.props.htmlUrl}}
        ref='_webView'
        scrollEnabled={true}
        javaScriptEnabled={true}
        domStorageEnabled={true}
        onNavigationStateChange ={(navState)=>{
           if(navState.url == ""){ // You must validate url to enter or navigate
              this.refs._webView.stopLoading();
           }
        }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多