Android-JS in WebView.loadUrl()
Ich soll zum laden einer Webseite im WebView, sondern entfernen Sie Teile der Webseite. So erstellte ich eine benutzerdefinierte WebViewClient. Und, in onPageFinished(), habe ich einige javascript entfernen Sie einige Elemente. Dann machte ich mich auf die WebView sichtbar.
Allerdings, wenn ich es ausführen, legt die Ansicht sichtbar, und dann sehe ich die Elemente, die entfernt wird. Es ist, als ob das JS im hintergrund ausgeführt wird, sehr langsam. Es erstellt eine schlechte Erfahrung anzeigen, da es blinkt die ganze Seite und dann die gewünschte partielle Seite.
Hier ist mein onPageFinished()
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:"
+ "document.getElementsByClassName('header')[0].style.display='none';"
+ "document.getElementById('section_0').style.display='none';"
+ "document.getElementById('page-actions').style.display='none';"
+ "document.getElementsByClassName('languageSelector')[0].style.display='none';"
+ "document.getElementById('mw-mf-last-modified').style.display='none';"
+ "document.getElementById('footer').style.display='none';");
loadingView.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);
}
Irgendwelche Ideen auf, wie man dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In onPageFinished():
In Der MainActivity.onCreate():
In Der MainActivity():
So, es war eine Kombination der Herstellung einer JavascriptInterface und dass eine JS-Funktion zu warten für die JS-Aufrufe zu beenden, bevor Sie die Schnittstelle (mit die Sichtbarkeit-Einstellungen).
Könnten Sie versuchen, um die Geschwindigkeit Ihres WebView mit:
Sowieso, Sie sollte nicht sein dass Ihr WebView sofort sichtbar. Warum nicht Sie erstellen eine Schnittstelle (siehe http://developer.android.com/guide/webapps/webview.html, Bindung der JavaScript-code für Android) und stellen Sie einen Anruf von Ihrem javascript:
nachdem die Animationen beendet haben?