Cün*_*eyt 0 javascript android webview webviewclient
我想WebView通过操作一些 DOM 元素来显示一个网站。我的意思是,我想删除一个特殊的 div 元素或用某些东西替换它。为此,我做了这样的事情:为了替换我使用这个模型的东西
document.getElementById("demo").innerHTML = "Hello World!";
Run Code Online (Sandbox Code Playgroud)
我将它应用到 Android 上WebView是这样的:
public class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
view.loadUrl("javascript:document.getElementById(\"jumbotron-company\").innerHTML = \"\";");
}
}
Run Code Online (Sandbox Code Playgroud)
它可以在我的 API 为 18 的设备上工作,但不能在 API 大于 18 的模拟器或设备上工作
@Mattia 说的是正确的。如果可能的话使用evaluateJavascript。它的另一个优点是能够从 JavaScript 返回结果的值。
但如果您想要一个与 API 无关的解决方法,请确保您使用的代码评估loadUrl("javascript:...")不会产生任何返回值。赋值返回指定的值。在较新版本的 WebView 中,此值用作替换现有页面的新页面的内容。
您可以通过两种方式确保正在计算的表达式不会产生返回值:
void(0);在末尾附加语句,例如loadUrl("javascript:elt.innerHTML='Hello World!';void(0);");
在不返回值的函数内运行代码,例如loadUrl("(function(){elt.innerHTML='Hello World!';})()");
| 归档时间: |
|
| 查看次数: |
3703 次 |
| 最近记录: |