Android:当我设置 shouldOverUriLoading return false 时,HTML 中的脚本无法调用 addEventListener
Android : script in HTML can't call addEventListener when I setting shouldOverUriLoading return false
当我使用 react-native-webview 时,我必须将函数 shouldOverideUrlLoading return 设置为 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 或我错了什么?请帮帮我
我必须自定义 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;
}
当我使用 react-native-webview 时,我必须将函数 shouldOverideUrlLoading return 设置为 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 或我错了什么?请帮帮我
我必须自定义 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;
}