У меня есть ViewPager с WebViews, содержащий некоторый контент HTML и JS.Android Webview останавливает загрузку с достижением 90% после инъекции JS
Когда я вызываю следующее:
public void goToAnchor(String hash) {
this.loadUrl("javascript:alert(myapp.getAnchorOffset(\'"+hash+"\'));");
}
это руны на JavaScript правильно, и в моем WebChromeClient я слушаю предупреждение, созданное в функции JS "getAnchorOffset", как это:
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
//Set the page
int offset = Math.round(Float.parseFloat(message));
Log.d("Anchor - ", "Offset = " + offset);
Log.d("Anchor - ", "width = " + mWebView.getWidth());
//Get the page
int page = Math.round(offset/mWebView.getWidth());
//Make the callback
anchorListener.didGetAnchorPage(page);
return true;
}
Это также правильно вызвано, и я получаю правильное значение в переменной «page». Теперь смешная/досадная часть заключается в том, что когда я делаю обратный вызов с помощью anchorListener.didGetAnchorPage, он выполняет обратный вызов, но все следующие webView, которые я использую, не будут загружаться, а прогресс останавливается на уровне 90%.
Как если бы я перешел на страницу 20 в ViewPager, WebView перестанет загружаться с 90%, и это всегда происходит после вызова JS, который я делаю.
Функция JS называется получение заключается в следующем:
myapp.getAnchorOffset = function(elementId) {
var searchResult = $(document).find("#"+elementId).first();
if (searchResult.length == 0) {
console.log("ERROR - no DOM element found by id: " + elementId);
return 0;
}
return searchResult.offset().left;
};
Кто-нибудь знает почему?
Заранее спасибо.
Я только заметил, что если я изменил возвращаемое значение onJsAlert на true, тогда он фактически отобразит другие страницы, но также отобразит предупреждение, и это не должно произойти. Как это можно исправить? – Kenneth