我正在制作自动搜索程序。
请先查看代码。
synchronizedLoadUrl:调用loadurl并等到onpagefinished调用
private String search(AutoClickItem item) throws InterruptedException {
this.synchronizedLoadUrl("http://m.naver.com");
this.loadUrl("javascript:" + querySelector("#query") + ".click();");
this.loadUrl("javascript:void(" + querySelector("#query") + ".value = '" + item.query + "');");
this.loadUrl("javascript:" + querySelector("button[type=submit]") + ".click();"); // this calls submit() and move to another location.
return pageFinishedQueue.take();
}
public class AutoClickWebViewClient extends WebViewClient {
BlockingQueue<String> pageFinishedQueue;
public AutoClickWebViewClient(BlockingQueue<String> pageFinishedQueue) {
this.pageFinishedQueue = pageFinishedQueue;
}
@Override
public void onPageFinished(WebView view, String url) {
pageFinishedQueue.add(url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
运行此代码时的过程:
首先,onPageFinished用“m.naver.com”解雇
第二,用“m.search.naver.com/search.naver?query=%EC%95%84%EC%9A%B0&where=m”烧掉了shouldOverrideUrlLoading
因为我致电"this.loadUrl("javascript:" + querySelector("button[type=submit]") + ".click();");
第三,onPageFinished用“http://m.naver.com”&lt;问题
我无法理解为什么第三个onPageFinished用“http://m.naver.com”
解雇了webview显示“m.search.naver.com/search.naver?query=%EC%95%84%EC%9A%B0&where=m”但onPageFinished用“m.naver.com”解雇!!
我想知道它为什么会这样,以及如何解决这个问题。
答案 0 :(得分:0)
来自shouldOverrideUrlLoading()
的文档:
返回:如果主机应用程序想要离开当前的WebView并处理url本身,则为True,否则返回false。
听起来你没有离开WebView,所以你应该返回false。