Aktivieren Allgemeine JavaScript in WebViewClient
Während der Suche nach einer Antwort in google, es scheint, dass ich bin nicht der einzige, stecken mit einem problem, das scheint unmöglich zu lösen.
Ich es geschafft haben, erstellen Sie eine WebView mit einem benutzerdefinierten WebViewClient - dies macht es möglich für mich, um einen processdialog und zeigt eine Fehlermeldung, wenn eine URL konnte nicht geladen werden.
Aber das schafft ein problem mit JavaScript. Die URL, die ich bin laden hat einige JavaScript, die änderungen einige HTML-Elemente CSS-Stile (ein-oder ausblenden element) oder leitet Sie an einen anderen Speicherort onclick - oder vielleicht sogar wollen, ist zu zeigen, eine alert-box. Aber mit der " WebViewClient keiner dieser arbeiten.
Dies ist, wie ich eine Seite zu laden:
public void loadUrl(String url)
{
final ProgressDialog dialog = ProgressDialog.show(myActivity.this, "", getString(R.string.loading), true);
final WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setVerticalScrollBarEnabled(false);
myWebView.setHorizontalScrollBarEnabled(false);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
Toast.makeText(myActivity.this, url, Toast.LENGTH_SHORT).show(); //Debugging purposes
if (url.endsWith(".mp4"))
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "video/mp4");
view.getContext().startActivity(intent);
}
else
{
view.loadUrl(url);
}
return true;
}
public void onPageFinished(WebView view, String url)
{
//Toast.makeText(myActivity.this, "Oh no!", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
Toast.makeText(myActivity.this, description, Toast.LENGTH_SHORT).show();
String summary = "<html><body><strong>" + getString(R.string.lost_connection) + "</body></html>";
myWebView.loadData(summary, "text/html", "utf-8");
}
}); //End WebViewClient
myWebView.loadUrl(url);
}
Dieser konnte wahrscheinlich gemacht werden, die in einer INTELLIGENTEREN Weg, aber ich bin neu bei Java und Android-Entwicklung...
Ist es möglich für mich zum aktivieren von JavaScript für den WebViewClient überhaupt?
Entfernen des WebViewClient löst das problem, aber dann kann ich nicht fangen die Ereignisse an, wenn die Seite fehlerhaft oder fertig geladen ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, was dein genaues problem ist, aber ich kann aktivieren Sie JavaScript und einen benutzerdefinierten
WebViewclient
ohne Probleme:wv.SetWebChromeClient(new WebChromeClient());
gearbeitet..Den richtigen Weg, um JavaScript zu aktivieren, ist durch hinzufügen der unten zwei Zeilen:
Selbst wenn Sie nach dem hinzufügen von seine nicht funktioniert, dann versuchen Sie die folgende Zeile.
Nun sollte Es funktionieren. 🙂
Versuchen, diese zu aktivieren, javascript
Tun "Javascript-URLs" weitergeleitet
shouldOverrideUrlLoading
? Versuchen Sie, überprüfen, und, wenn ja, zurückfalse
für links wie (so, dass die webview Griffe der link, nicht dein WebViewClient)Was in meinem Fall passiert : ich war mit lokalen html-Dateien und wenn Sie
aber dann meine urls aufgehört zu arbeiten. Lösung, um sowohl JS, als auch lokale href Arbeit war die Beurteilung
wo
Ähnlich wie @mdelolmo Antwort, aber in Kotlin: