Skip to content

Commit ebd59c3

Browse files
committed
feat: 根據 PR 調整 RNCWebViewClient.java
1 parent d97db0b commit ebd59c3

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.webkit.HttpAuthHandler;
1010
import android.webkit.RenderProcessGoneDetail;
1111
import android.webkit.SslErrorHandler;
12+
import android.webkit.WebChromeClient;
1213
import android.webkit.WebResourceRequest;
1314
import android.webkit.WebResourceResponse;
1415
import android.webkit.WebView;
@@ -34,6 +35,7 @@
3435
import android.webkit.CookieManager;
3536
import android.webkit.CookieSyncManager;
3637

38+
import java.util.Objects;
3739
import java.util.concurrent.atomic.AtomicReference;
3840

3941
public class RNCWebViewClient extends WebViewClient {
@@ -68,6 +70,9 @@ public void onPageFinished(WebView webView, String url) {
6870
if (!mLastLoadFailed) {
6971
RNCWebView reactWebView = (RNCWebView) webView;
7072

73+
RNCWebChromeClient webChromeClient = (RNCWebChromeClient) reactWebView.getWebChromeClient();
74+
if(Objects.nonNull(webChromeClient)) webChromeClient.blockJsDuringLoading = false;
75+
7176
reactWebView.callInjectedJavaScript();
7277

7378
emitFinishEvent(webView, url);
@@ -91,12 +96,20 @@ public void onPageStarted(WebView webView, String url, Bitmap favicon) {
9196
mLastLoadFailed = false;
9297

9398
RNCWebView reactWebView = (RNCWebView) webView;
99+
100+
RNCWebChromeClient webChromeClient = (RNCWebChromeClient) reactWebView.getWebChromeClient();
101+
if(Objects.nonNull(webChromeClient)) webChromeClient.blockJsDuringLoading = true;
102+
94103
reactWebView.callInjectedJavaScriptBeforeContentLoaded();
95104
}
96105

97106
@Override
98107
public boolean shouldOverrideUrlLoading(WebView view, String url) {
99108
final RNCWebView rncWebView = (RNCWebView) view;
109+
110+
RNCWebChromeClient webChromeClient = (RNCWebChromeClient) rncWebView.getWebChromeClient();
111+
if(Objects.nonNull(webChromeClient)) webChromeClient.blockJsDuringLoading = true;
112+
100113
final boolean isJsDebugging = rncWebView.getReactApplicationContext().getJavaScriptContextHolder().get() == 0;
101114

102115
if (!isJsDebugging && rncWebView.mMessagingJSModule != null) {

0 commit comments

Comments
 (0)