2015-11-03 138 views
0

我想知道如何拦截从WebView内的Cor​​dova 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,这个代码不拦截该请求。有什么建议么?

回答

0

你必须修改inAppBrowser代码

https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/android/InAppBrowser.java

线646 webViewClient设置:

inAppWebView.setWebViewClient(client); 

客户有InAppBrowserClient类,它的上线742 定义您可以在那里添加shouldInterceptRequest逻辑或使用您自己的WebViewClient子类

+0

是的。我覆盖了'InAppBrowserClient'的'onResourceLoad',现在我可以拦截请求。使用科尔多瓦5.3.3。 –

0

您可以使用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”}); });

这是否适合您可能取决于您的自定义逻辑需要做什么,但它可能是一个值得调查的途径。您也许可以将事件侦听器添加到页面中的所有链接,并在单击它们时运行自定义逻辑。