我有WebView加载一些页面,当它完成时我应用一些javascript魔法来搞乱DOM。一切都很好,页面加载和onPageFinished
我只需拨打wv.loadUrl(javascript);
但我不想看到加载过程,以及javascript是如何工作的,我只需要结果,所以我从一开始就用wv.setVisibility(View.INVISIBLE);
使我的视图不可见,并在完成所有操作后再次显示。这就是问题发生的地方。
这段代码应该在javascript完成后使视图可见,但wv.setVisibility(View.VISIBLE)
在javascript之前触发。所以有一会儿我看到了页面以及如何通过javascript更改它。这太丑了。
public void onPageFinished (WebView view, String url) {
wv.loadUrl(javascript);
view.getSettings().setLoadsImagesAutomatically(true);
wv.setVisibility(View.VISIBLE);
}
我知道loadUrl是异步工作的,所以我尝试在onPageFinished
中使用“make first view visible”方法创建另一个WebViewClient,并用它来调用JS。但它只是随着NPE错误而崩溃。
wv2.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished (WebView view, String url) {
wv.setVisibility(View.VISIBLE);
}
});
现在我刚刚在javascript(SystemClock.sleep(5000)
)之后添加了延迟,但这就像......是的。