She*_*urs 2 javascript android webview
我觉得不得不问这个问题很愚蠢,但我终生无法让它发挥作用。
所以我四处搜索并找到了很多关于在 WebViewClient 中使用 onPageFinished 函数的帮助、指南等,我的代码主要基于这些。
基本上我有一个函数应该加载一个网页,然后用 onPageFinished 隐藏该页面上的某些元素。尽管它隐藏了整个页面并且 webview 显示文本“无”,但实际上并没有这样做。当我注释掉 onPageFinished 函数时,webview 加载页面就好了,这让我相信它必须是 javascript,但根据 w3c 站点,我的 javascript 对我想做的事情是正确的...
所以我的问题是,有没有人看到以下代码的问题和/或任何人对其他可能实现我上述目标的东西有建议?
任何帮助使其正常工作将不胜感激。
代码:
public class MainActivity extends AppCompatActivity{
private WebView browser;
private String url = "https://www.google.com";
< onCreate calls cleanPage and other stuff >
public void cleanPage() {
browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setJavaScriptEnabled(true);
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';");
}
});
browser.loadUrl(url);
}
}
Run Code Online (Sandbox Code Playgroud)
笔记:
-以上以google为例,lga为google横幅div的id。
-browser 和 url 是全局的,因为一旦我让 cleanPage 工作,我将添加其他函数来根据需要改变它们。
您需要void(0);在javascript:URL末尾添加。否则, WebView 会用 JS 评估的结果(在您的情况下,即 string "none")替换您的当前页面。
所以改变这个:
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';");
Run Code Online (Sandbox Code Playgroud)
到:
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';void(0);");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |