Cordova拦截inappbrowser

时间:2015-11-03 00:49:37

标签: android cordova inappbrowser

我想知道如何拦截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时,此代码不会拦截该请求。有什么建议吗?

2 个答案:

答案 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子类