Android JS in WebView.loadUrl ()

Ich möchte eine Webseite in WebView laden, aber Teile der Webseite entfernen. Also habe ich einen benutzerdefinierten WebViewClient erstellt. Und in onPageFinished (), habe ich einige Javascript, um einige Elemente zu entfernen. Dann habe ich das WebView sichtbar gemacht.

Allerdings, wenn ich es ausführen, setzt es die Sicht sichtbar, und dann sehe ich die Elemente entfernt werden. Es ist, als ob die JS im Hintergrund sehr langsam läuft. Es schafft ein schlechtes Seherlebnis, weil es die ganze Seite und dann die gewünschte Teilseite blinkt.

  • Android: Wie ändere ich das DatePicker View Datumsformat von MM / TT / JJJJ auf TT / MM / JJJJ?
  • OnContextItemSelected wird nicht ausgelöst, wenn es aus dem Dialogfenster aufgerufen wird
  • Wie bekomme ich den Zeitstempel der eingehenden xmpp-Nachricht?
  • Lesen von sqlite-Datei aus dem Asset-Ordner
  • Weiß jemand, wie man PagerTitleStrip in Android benutzt
  • Android In-App Kauf V3 Fehler: Authentifizierung ist erforderlich
  • 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, wie man das beheben kann?

  • Permission Denial: ... benötigt android.permission.WRITE_EXTERNAL_STORAGE
  • Android 9-Patch Hintergrundbild Initial PNG Größe?
  • Ersetzen (oder "Override") String in Android Library Project
  • Kontextmenü aus einem ListFragment
  • Set OnClick Listener auf Action Bar Titel in Android
  • Schreibe Datei auf SD-Karte und nicht USB-Speicher
  • 2 Solutions collect form web for “Android JS in WebView.loadUrl ()”

    In onPageFinished ():

     view.loadUrl("javascript:" + "var FunctionOne = function () {" + " var r = $.Deferred();" + " try{document.getElementsByClassName('header')[0].style.display='none';}catch(e){}" + " try{document.getElementById('section_0').style.display='none';}catch(e){}" + " try{document.getElementById('page-actions').style.display='none';}catch(e){}" + " try{document.getElementsByClassName('languageSelector')[0].style.display='none';}catch(e){}" + " try{document.getElementById('mw-mf-last-modified').style.display='none';}catch(e){}" + " try{document.getElementById('footer').style.display='none';}catch(e){}" + " setTimeout(function () {" + " r.resolve();" + " }, 2500);" + " return r;" + "};" + "var FunctionTwo = function () {" + " window.CallToAnAndroidFunction.setVisible();" + "};" + "FunctionOne().done(FunctionTwo);"); 

    In MainActivity.onCreate ():

     this.webView.addJavascriptInterface(new JsObject(webView, loadingView), "CallToAnAndroidFunction"); 

    In MainActivity ():

     public class JsObject { private View loadingView; private View view; JsObject(View view, View loadingView){this.view = view;this.loadingView = loadingView;} @JavascriptInterface public void setVisible(){ runOnUiThread(new Runnable() { @Override public void run() { view.setVisibility(View.VISIBLE); loadingView.setVisibility(View.INVISIBLE); } }); } } 

    Also, es war eine Kombination aus der Herstellung eines JavascriptInterface und eine JS-Funktion zu warten, bis die JS-Anrufe zu beenden, bevor Sie die Schnittstelle (mit den Sichtbarkeitseinstellungen) zu beenden.

    Sie könnten versuchen, Ihre WebView zu beschleunigen mit:

     webview.getSettings().setRenderPriority(RenderPriority.HIGH); webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 

    Wie auch immer, du solltest deine WebView nicht sofort sichtbar machen. Warum schaffst du keine Schnittstelle (siehe http://developer.android.com/guide/webapps/webview.html , Binding JavaScript Code zu Android) und mache einen Anruf von deinem Javascript an:

     public void myCallback(){ view.SetVisibilitu(View.VISIBLE) }; 

    Nachdem die animationen beendet sind

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.