gpt4 book ai didi

android - 在 WebViewClient 中启用通用 JavaScript

转载 作者:IT老高 更新时间:2023-10-28 13:21:28 26 4
gpt4 key购买 nike

在 google 中搜索答案时,似乎并非只有我一个人遇到了似乎无法解决的问题。

我已经设法使用自定义 WebViewClient 创建了一个 WebView - 这使我可以拥有一个 processdialog 并在无法加载 URL 时显示错误消息。

但这会给 JavaScript 带来一个问题。我正在加载的 URL 有一些 JavaScript,它改变了一些 HTML 元素 CSS 样式(显示或隐藏元素)或重定向到另一个位置 onclick - 或者甚至可能想要显示一个警告框。但是通过使用 WebViewClient,这些都不起作用。

这是我加载页面的方式:

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);
}

这可能以更智能的方式完成,但我是 Java 和 Android 开发的新手...

我是否可以为 WebViewClient 启用 JavaScript?删除 WebViewClient 可以解决问题,但是当页面错误或完成加载时我无法捕获事件。

最佳答案

我不知道您的确切问题是什么,但我可以毫无问题地启用 JavaScript 和自定义 WebViewclient:

WebView vistaWeb = (WebView) findViewById(R.id.webview);
vistaWeb.setWebChromeClient(new MyCustomChromeClient(this));
vistaWeb.setWebViewClient(new MyCustomWebViewClient(this));
vistaWeb.clearCache(true);
vistaWeb.clearHistory();
vistaWeb.getSettings().setJavaScriptEnabled(true);
vistaWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

关于android - 在 WebViewClient 中启用通用 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5089578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com