我有一个加载网站的简单webview。加载网站后,我有以下内容聚焦/滚动到登录框:
mWebview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
mWebview.scrollTo(681, 100);
(我听说onPageFinished已被弃用,但它在2.2> 4.4中适用于我,所以我现在暂时离开它。
无论如何,我想某种方式来监视用户实际登录的时间,当页面完成第二次加载时,我可以调用一些js并将它们转发到另一个页面,但是我不知道该怎么做。 :(
我可以在登录后再进行另一次onPageFinished,但我不知道如何开始监控......换句话说,我不能在当前后立即启动另一个onPageFinished,因为它只是自动重定向。 / p>
有没有人有任何建议?我将不胜感激! :)
编辑:
这是我的MainActivity.java类的全部(减去导入标题)。
public class MainActivity extends Activity {
private WebView mWebview ;
@Override
public void onBackPressed() {
if(mWebview.canGoBack() == true){
mWebview.goBack();
}else{
super.onBackPressed();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWebview = new WebView(this);
mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
mWebview.getSettings().setBuiltInZoomControls(true);
if(android.os.Build.VERSION.SDK_INT >= 11) {
mWebview.getSettings().setDisplayZoomControls(false);
}
final Activity activity = this;
mWebview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
}
});
mWebview .loadUrl("http://example.com");
setContentView(mWebview );
mWebview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
mWebview.scrollTo(681, 100);
}
}
);
}
我想我可能会错过一个大括号,但现在忽略它,哈哈。所以无论如何,在mWebview.scrollTo
(最后一行)之后,网页已经完成加载,它只是在登录页面处冷却。用户登录后,页面(显然)开始加载并指向另一个登录后的URL。页面完成第二次加载后,我想用if
语句检查URL。
这更有意义吗?对不起,这也让我感到困惑,试图解释一下。
答案 0 :(得分:0)
通常会有两个单独的URL,一个用于登录后页面,另一个用于登录前页面。您可以使用if
语句检查URL以确保您已登录,如果有,则重定向/关闭/无论如何。
我在这里遇到了类似的问题:
所以基本上你只想在登录后执行一些JavaScript?我不明白为什么你不能用if
语句检查你是否登录,如果你已经登录,那么执行js。
这样的事可能吗?
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (url.contains(getString(R.string.loginURL))){
super.onPageFinished(view, url);
mWebview.scrollTo(681, 100);
}else if(url.contains(getString(R.string.loggedInURL))) {
wv.loadUrl(js goes here);
}
}
}
每次在WebView