【发布时间】:2011-04-28 14:31:03
【问题描述】:
我有加载一些页面的 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 中的“使第一个视图可见”方法创建另一个 WebViewClient,并使用它来调用 JS。但它只是不断因 NPE 错误而崩溃。
wv2.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished (WebView view, String url) {
wv.setVisibility(View.VISIBLE);
}
});
现在我只是在 javascript (SystemClock.sleep(5000)) 之后添加了延迟,但这就像.. 是的。
【问题讨论】:
标签: javascript android webview