我想使用Webview中的Javascript更改HTML页面上的某些值。页面加载完成后,我尝试了多种评估Javscript的方法。
这是我的代码:
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setBlockNetworkImage(false);
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
webview.loadUrl("javascript:(function() { document.getElementById('options').value = '" + found.getId() + "'; ;})()");
button.performClick();
}
});
我认为这意味着,在页面完全加载之前,该方法要尽早调用。你有什么想法吗?
为了使用javascript也称为DOM Manipulate来更改HTML中的值/内容/样式,那么在DOM准备就绪或完全加载后,我们要等待。在这种情况下,我们将页面加载到小部件WebView中,然后开展业务。
我有在相同情况下总是使用的示例代码,
...
final String url = "http://example.com";
final WebView webview = findViewById(R.id.my_webview);
final String myNewValue = "it works!";
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// Your custom javascript here
String myCustomJS = "document.getElementById('options').innerHTML = '" +
myNewValue + "'";
// here we execute the javascript code
webview.loadUrl("javascript:(function(){" + myCustomJS + "})()");
}
});
// and here we load the url
webview.loadUrl(url);
...
我希望上面的代码可以帮助您继续工作。