科尔多瓦拦截URL加载inappbrowser
问题描述:
我想知道如何拦截从WebView内的Cordova InAppBrowser URL加载。科尔多瓦拦截URL加载inappbrowser
目前,我可以拦截从下面的代码主要的WebView URL装载在我MainActivity
:
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网页视图内的一些URL,这个代码不拦截该请求。有什么建议么?
答
你必须修改inAppBrowser代码
https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/android/InAppBrowser.java
线646 webViewClient设置:
inAppWebView.setWebViewClient(client);
客户有InAppBrowserClient
类,它的上线742 定义您可以在那里添加shouldInterceptRequest
逻辑或使用您自己的WebViewClient
子类
答
您可以使用InAppBrowser的executeScript功能来执行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”}); });
这是否适合您可能取决于您的自定义逻辑需要做什么,但它可能是一个值得调查的途径。您也许可以将事件侦听器添加到页面中的所有链接,并在单击它们时运行自定义逻辑。
是的。我覆盖了'InAppBrowserClient'的'onResourceLoad',现在我可以拦截请求。使用科尔多瓦5.3.3。 –