2017-01-20 37 views
8

我正在使用webview实现应用程序。对于在webview中加载的url,我需要在url中加载的html代码上执行替换。如何通过在Webview中加载的网站进行替换

如何以有效的方式做到这一点?

说明:我需要从源替换特定脚本的脚本:

在例如:欲

<html> 
    <script> SCRIPT A</script> 
    <p>Hello World</p> 
</html> 

我想显示的用户的其他

<html> 
    <script> SCRIPT B</script> 
    <p>Hello World</p> 
</html> 

谢谢

+0

你能稍微清楚一点吗?你需要替换部分网址或你正在加载的网页部分吗?你是否需要一次更换整个模块,或者是逐字逐句更换?此外,您是否正在寻找Android代理系统的钩子,或者您在寻找有关使用哪种算法的建议? – katzenhut

+0

我更新了我的问题,请查看 – Addev

+0

如果我没有弄错,你想用当前的web js脚本替换你的脚本吗? – ZeroOne

回答

1

您必须覆盖shouldInterceptRequestWebViewClient。请参阅文档here

的一般形式是这样的(未经测试):

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public WebResourceResponse shouldInterceptRequest (final WebView view, String url) { 
     if (you_want_to_intercept) { 
      /*return custom WebresourceResponse here*/ 
     } else { 
      /*call superclass*/ 
      return super.shouldInterceptRequest(view, url); 
     } 
    } 
} 

我希望这可以帮助,让我知道如果没有。

0

您可以使用http请求获取HTML页面作为字符串,然后使用类似jsoup的内容来查找和替换脚本,并使用WebView.loadDataWithBaseURL将HTML内容加载到WebView中。

相关问题