我想知道如何拦截Cordova InAppBrowser中WebView内部的URL加载。
目前,我可以使用MainActivity
中的以下代码拦截主WebView中的网址加载:
final WebView myWebView = (WebView) this.appView.getView();
myWebView.setWebViewClient(new SystemWebViewClient((SystemWebViewEngine) this.appView.getEngine()) {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
// Some custom logic
}
但是当我在InAppBrowser Webview中加载一些URL时,此代码不会拦截该请求。有什么建议吗?
答案 0 :(得分:0)
您可以使用InAppBrowser的executeScript功能在IAB加载页面后在IAB内部执行某些脚本,然后让该脚本执行您想要的任何逻辑example from the docs:
var ref = cordova.InAppBrowser.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstop',function(){ ref.executeScript({file:“myscript.js”}); });
这是否适合您可能取决于您的自定义逻辑需要做什么,但这可能是值得研究的路径。您可以将事件侦听器添加到页面中的所有链接,并在单击它们时运行自定义逻辑。
答案 1 :(得分:0)
您必须修改inAppBrowser代码
https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/android/InAppBrowser.java
在第646行,设置了webViewClient:
inAppWebView.setWebViewClient(client);
客户端有InAppBrowserClient
类,它在第742行定义。
您可以在那里添加shouldInterceptRequest
逻辑或使用您自己的WebViewClient
子类