在Android上,我有一个WebView显示页面.
如何在不请求页面的情况下获取页面源?
似乎WebView应该有某种getPageSource()方法返回一个字符串,但唉它没有.
如果我启用JavaScript,那么在此调用中放入适当的JavaScript以获取内容是什么?
webview.loadUrl("javascript:(function() { " +
"document.getElementsByTagName('body')[0].style.color = 'red'; " +
"})()");
Run Code Online (Sandbox Code Playgroud) 例如,我想将背景颜色更改www.google.com为red.我用过webview,我的style.css档案在assest folder.我想将此style.css文件注入www.google.com.我的代码出了什么问题?请为我写正确的代码.谢谢.我的MainActitviy.java档案:
package com.example.mysina;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = new WebView(this);
setContentView(webView);
String html = "<html><head><style> src: url('file:///android_asset/style.css')</style></head></html>";
webView.loadData(html, "text/html", "utf-8");
webView.loadUrl("https://www.google.com");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it …Run Code Online (Sandbox Code Playgroud) 我有一个WebView包含表格的html(帖子).单击某个提交按钮时,我会收到JSON响应.
我怎样才能获得这个JSON?
如果我不拦截请求,json会显示在webview上,所以我想我应该使用shouldInterceptRequest(我使用的是API 12),但我不知道如何获取json.
或者也许有更好的方法,比如拦截响应而不是请求?
mWebView.loadUrl(myURL);
isPageLoaded = false; // used because the url is the same for the response
mWebView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest (WebView view, String url) {
if(isPageLoaded){
// get the json
return null;
}
else return super.shouldInterceptRequest(view, url);
}
public void onPageFinished(WebView view, String url) {
isPageLoaded = true;
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我在这个案子上被困了一会儿.
我有一个webview Android 4.4.3,我有一个float32array包含二进制数据的webapp .我想array通过绑定的函数将其传递给Java Android JavascriptInterface.然而,这似乎是在Java中,我只能通过原始的类型,如String,int等...
有没有办法给Java这个arrayBuffer?
谢谢 !
我试着按照这个教程:http: //docs.phonegap.com/en/2.7.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android
并得到以下错误:
05-08 15:35:59.845: E/dalvikvm(307): Could not find class 'android.webkit.WebResourceResponse', referenced from method org.apache.cordova.CordovaWebViewClient.getWhitelistResponse
Run Code Online (Sandbox Code Playgroud)
这里有一个人解释错误:https://issues.apache.org/jira/browse/CB-3041
This is a known issue. Because Android 2.3 does not have android.webkit.WebResourceResponse, this code is considered dead by Android 2.3's Dalvik. This means your whitelisting doesn't work properly like it does on Android 4.x, as per CB-2099. I'm going to keep this open, but lower the priority, since we know what causes it and it's an easy "First Bug" …Run Code Online (Sandbox Code Playgroud) 我正在为Android制作一个自定义的简单Web浏览器,需要捕获用户浏览的每个页面的内容并在渲染之前对其进行操作,以便按预期显示.
我不想打破用户登录状态和交互,所以我不想拦截POST请求或cookie.
据我所知,我可以把内容loadDataWithBaseURL().但是,为了获得更好的用户体验,我想在用户看到之前获取内容并进行操作,如果可能的话,在下载图像之前(如DOMReadyJS),但不知道如何做到这一点.
什么是最好听的地方,我怎样才能获得当前的webview内容?
由于我是Android开发的新手,我一直在寻找解决方案的好建议.谢谢.
为什么有些页面没有加载到我的WebView中(但似乎在Chrome中工作正常)?例如:
我已经设置了我的WebView以启用JS.这是我的WebView初始化代码:
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
}
else {
progressBar.setVisibility(View.VISIBLE);
}
}
});
webView.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)