0

当我使用 react-native-webview 时,我必须设置函数 shouldOverideUrlLoading 返回 false。这样我的 HTML 脚本就无法收听我从组件发送的消息。它在 iOS 中运行良好,但在 Android 中我在 HTML 中的函数 addEventListener 不会触发任何东西

我的 HTML javascript 看起来像:

console.log("checkme; data", data);
            if (data.data) {
                alert("checkMe:" + JSON.stringify(data.data));
                symbol = data.data;
            }
            // initOnReady();
        })

在我的组件中,我将 postMessage 发送到我的 WebView,如下所示: this.WebView.postMessage("hello");

在 iOS 中,没有错,但在 Android 中,可能 shouldOverideUrlLoading 阻止我将数据从组件传递到 webview 以更新 HTML 文件。那么,您是否有另一种解决方案将数据从组件传递到 webview,而不是通过 postMessage 或者我在某些事情上错了?请帮帮我

4

1 回答 1

0

我必须自定义 react-native-webview 来解决这个问题。这是我必须在 RNCWebviewManager.java 中修改的功能

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
  String FILE_LOCAL_PATH = "file:///";
  if (url.contains(FILE_LOCAL_PATH)){ // kyun: Fix allow another HTML file load through 1 first HTML 
    return false;
  }
  dispatchEvent(
    view,
    new TopShouldStartLoadWithRequestEvent(
      view.getId(),
      createWebViewEvent(view, url)));
  return true;
}
于 2019-12-31T04:39:15.010 回答